Dal decimal?
non ha un sovraccarico ToString(string format)
, il modo più semplice è utilizzare invece String.Format
che fornirà risultati coerenti con lo null
caso per decimalValue
così (con conseguente una stringa vuota) rispetto al codice originale:
string value = String.Format("{0:#.##}", decimalValue * 100);
Ma ci sono alcune altre considerazioni per altri numeri che non erano chiare su.
Se si dispone di un numero che non produce un valore maggiore di 0, mostra uno zero iniziale? Cioè, per 0.001211
, viene visualizzato come 0.12
o .12
? Se si desidera che lo zero, utilizzare questo invece (notare il cambiamento #.##
-0.##
):
string value = String.Format("{0:0.##}", decimalValue * 100);
Se si dispone di più di 2 cifre decimali significativi, vuoi quelli visualizzati? Quindi se avessi .12113405
verrà visualizzato come 12.113405
? Se in modo da utilizzare:
string value = String.Format("{0:#.############}", decimalValue * 100);
(Onestamente, penso che ci deve essere una stringa meglio formattazione di questo, soprattutto in quanto supporta solo 12 cifre decimali)
E, naturalmente, se si desidera che entrambi gli zeri iniziali e più cifre decimali, basta combinare i due di cui sopra:
string value = String.Format("{0:0.############}", decimalValue * 100);
fonte
2013-05-15 10:39:32
Il motivo è probabilmente il formato numerico predefinito del sistema per i numeri decimali. –
Volevi che visualizzasse più di due cifre decimali se non sono zero? Cioè, se tu avessi '.12113405' vorresti che appaia come' 12.113405'? –
Proprio quello che stavo pensando: sono solo gli zeri finali, o vuoi sempre limitare di 2 decimali? Nel primo caso, nessuna delle risposte fornisce una buona risposta. –