2016-07-05 14 views
19

In C++ è possibile separare le cifre per migliorare la leggibilità nel codice con apostrofi:cifre separatori per grandi numeri in codice C#

int num = 1'000'000; 

In Ruby, si può usare sottolineature:

num = 1_000_000 

C'è una sintassi simile per C#? Ho provato diverse ricerche ma ho trovato solo risultati per l'output o la lettura di numeri in un formato particolare.

+3

Sono abbastanza sicuro che il concetto di sottolineatura è stato considerato/parzialmente implementato in C# 6, ma non è stato rilasciato. – Jonesopolis

+0

So che è brutto ma 'int num = 1000000; // 1,000,000' potrebbe fare il trucco o anche 'int num = 1000000; // un milione! per il tuo esatto esempio. – MonkeyZeus

+1

Non sono un tipo C# ma ho un disgusto generale per i letterali numerici non banali nel codice, che ne dite di 'const int ONE_MILLION = 1000000;' (o comunque lo dici in C#) nella parte superiore del file? –

risposta

28

Al momento in cui questa risposta viene scritta, quella funzione non esiste in C#. Tuttavia, c'è un feature request per questo, e sembra che farà parte di C# 7, che è la versione imminente.

La richiesta di funzione è elencata sul loro C# 7 list of features, ma probabilmente non si dovrebbe supporre che il 100% lo farà. Le cose sono soggette a modifiche.

+1

Sembra che questo sia stato implementato in C# 7 per Visual Studio 2017. È possibile eseguire 'int million = 1_000_000;' – Shaun

1

Nel frattempo, è ancora possibile fare questo:

int num = Int32.Parse("1,000,000", NumberStyles.AllowThousands); 
+3

Ciò significa una cosa molto diversa rispetto alle versioni C++ e Ruby. Perché non usare un commento solo a quel punto? 'int num = 1000000 // 1,000,000' –

+5

@AssortedTrailmix Quindi il commento e il codice non possono non essere sincronizzati. –

+3

Quindi qualcuno un giorno cambia la cultura attuale e i numeri analizzati nel programma non sono più tutti uguali! Se vuoi veramente analizzare il numero in questo modo, dovresti aggiungere "CultureInfo.InvariantCulture" come terzo parametro, perché se lo dimentichi anche solo una volta, ti brucerà! – Shautieh

0

Questo non aiuterà con int, ma con decimali si può usare:

decimal num1 = 1E06M; // 1000000 
decimal num2 = 1.23e06m; // 1230000 
Problemi correlati