Perché 0.ToString ("#. ##") restituisce una stringa vuota invece di 0,00 o almeno 0?


114

Perché 0.ToString("#.##")restituisce una stringa vuota? Non dovrebbe essere 0.00o almeno 0 ?

Risposte:


185

#nel formato stringa indicare che il valore è facoltativo. Se desideri ottenere l'output, 0.00hai bisogno di quanto segue:

0.ToString("0.00");

Vedi qui per i formati numerici personalizzati che possono essere passati a questo metodo.


3
Una cosa mi ha ancora confuso il motivo per cui il risultato non è 0. Perché 0 non è opzionale. Vuoto ha senso?
user960567

135

Perché in una stringa di formato, #viene utilizzato per indicare un segnaposto di carattere opzionale; viene utilizzato solo se necessario per rappresentare il numero.

Se lo fai invece: 0.ToString("0.##");ottieni:0

È interessante notare che se lo fai: 0.ToString("#.0#");ottieni:.0

Se vuoi tutte e tre le cifre: 0.ToString("0.00");produce:0.00


Dai commenti a questa risposta, il tuo argomento sembra essere,

dovrebbe mostrare "0", perché perché qualcuno dovrebbe mai voler vedere una stringa vuota se il valore numerico è 0?

La risposta è semplice: puoi scegliere come desideri che venga visualizzato. Ecco a cosa servono le stringhe di formato personalizzate. Hai semplicemente scelto la stringa di formato errata per le tue esigenze .


20

Secondo la documentazione sul segnaposto della cifra .

Se il valore da formattare ha una cifra nella posizione in cui appare il "#" nella stringa di formato, quella cifra viene copiata nella stringa di risultato. In caso contrario, nulla viene memorizzato in quella posizione nella stringa del risultato. Questo specificatore non visualizza mai il carattere "0" se non è una cifra significativa, anche se "0" è l'unica cifra nella stringa. Visualizzerà il carattere "0" se è una cifra significativa nel numero visualizzato. La stringa di formato "##" fa sì che il valore venga arrotondato alla cifra più vicina che precede il decimale, dove viene sempre utilizzato l'arrotondamento dallo zero. Ad esempio, la formattazione di 34,5 con "##" restituirà il valore 35.

Se si desidera visualizzare lo zero, utilizzare Zero PlaceHolder

Se il valore da formattare ha una cifra nella posizione in cui appare lo "0" nella stringa di formato, quella cifra viene copiata nella stringa di risultato. La posizione dello "0" più a sinistra prima del punto decimale e dello "0" più a destra dopo il punto decimale determina l'intervallo di cifre che sono sempre presenti nella stringa del risultato.
L'identificatore "00" fa sì che il valore venga arrotondato alla cifra più vicina che precede il decimale, dove viene sempre utilizzato l'arrotondamento rispetto allo zero. Ad esempio, la formattazione di 34,5 con "00" restituirà il valore 35.



-1

Usalo in questo modo:

0.ToString("#0.##")

0dopo #assicurerà di impostare il valore di uscita a 0 se il valore è 0 altrimenti visualizzerà il valore. Quindi 0.0.ToString("#0.##")=0.00e10.ToString("#.##")=10.00

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.