Numero formattazione può essere gestito per voi dal quadro se si utilizza la corretta culture durante la manipolazione del numero.
Console.WriteLine(4.3);
Console.WriteLine(4.3.ToString(CultureInfo.GetCultureInfo("fr-fr")));
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr-fr");
Console.WriteLine(4.3);
Se si desidera eseguire una visualizzazione "una tantum", il secondo approccio funzionerà. Se vuoi visualizzare correttamente tutti i numeri, dovresti impostare lo current thread's culture. In questo modo, qualsiasi manipolazione di numeri gestirà i separatori decimali, raggruppando i caratteri e qualsiasi altra cosa specifica della cultura correttamente.
Lo stesso vale per i numeri di analisi. Se un utente immette 1,234
, come si fa a sapere se è stato immesso 1.234
(la virgola è il separatore decimale) o 1234
(la virgola è un separatore di raggruppamento)? Questo è dove la cultura aiuta in quanto sa come visualizzare i numeri e può anche essere utilizzato per analizzare in modo corretto:
Console.WriteLine(double.Parse("1,234"));
Console.WriteLine(double.Parse("1,234", CultureInfo.GetCultureInfo("fr-fr")));
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr-fr");
Console.WriteLine(double.Parse("1,234"));
È possibile che questo testamento uscita 1234
(la virgola è un separatore decimale nel mio it-it cultura di default), 1.234
(la virgola è un separatore decimale in francese) e 1,234
(di nuovo, la virgola è un separatore decimale in francese, e anche la cultura del thread è impostata su French in modo da visualizzare utilizzando questa cultura - da cui la virgola come separatore decimale nell'output).
si prenderà cura di gestire anche migliaia, che sono anche diversi. – dove
Ma ha lo svantaggio che devi inserire manualmente le informazioni sulla cultura in OGNI metodo ToString, String.Format, Number.Parse e simile nel tuo codice. – Foxfire
È utile per un caso specifico ma non consente di specificare il punto decimale. –