2012-09-06 14 views
7

Ho bisogno di tutti i valori arrotondati a due posizioni decimali. Quindi 1,401 dovrebbe arrotondare a 1,40, ma a Math.Round(value, 2) giri a 1,4.Math.Round non mantiene lo zero finale

Come posso forzare lo zero finale?

risposta

17

1.4 è lo stesso di 1.40 - si desidera solo per visualizzare in modo diverso. Utilizzare una stringa di formato al momento della chiamata ToString - come value.ToString("0.00")

+0

Corretto. Voglio solo mostrarlo diversamente. Grazie! – Blade3

12

1.4 == 1.40 l'unica volta in cui è necessario uno 0 finale è quando si visualizza il numero..i.e. formattarlo in stringa.

.ToString("N2"); 
5

L'zero finale è più di una formattazione di un problema di valore, in modo da utilizzare

foo.ToString("0.00") 
2

L'zero finale è solo una presentazione. Dal punto di vista della matematica, 1.40 e 1.4 sono equivalenti.

Usa formattazione invece di presentare con le 2 cifre decimali:

String.Format("{0:0.00}", 1.4); 

or 

yourNumber.ToString("0.00"); 
1

è un numero, in modo che non ha uno zero finale - bisogna renderlo testo e la forza (doppia?) uno zero finale.

2

So che questa è una vecchia domanda, ma potrebbe aiutare qualcuno!

Sto usando una classe C# xml per popolare e quindi serializzare su xml. Uno dei valori è un doppio. Se assegno un '7' al valore questo viene serializzato a '7' quando effettivamente ho bisogno di '7.00'. Il modo più semplice intorno a questo era solo per fare:

foo = doubleValue + 0.00M 

E che rende il valore 7,00 invece di 7. pensato che questo era meglio allora fare un ToString e poi l'analisi indietro.

0

Ha a che fare con se si utilizza un decimale o un doppio.

Mentre internamente (come appare dalla Source Code) Math.Round() conserva le zeri finali anche su un doppio, ancora il fatto che si è salvato come un doppio in memoria provoca automaticamente per rimuovere tutti gli zeri finali

Quindi, se si vuoi zero di coda, puoi usare le funzioni di visualizzazione delle stringhe per formattarlo come gli altri hanno risposto, o assicurarti di passare il valore originale come decimale (causando l'uso internamente di Decimal.Math.Round che si occuperà solo di decimali), e assicurati non trasmettere il risultato a un doppio e inoltre non salvarlo in una doppia variabile.

Analogamente, se si dispone di un decimale e non si desiderano zeri finali, basta convertirlo in doppio (è possibile trasmettere l'input a Math.Round o il risultato, non importa finché lungo il percorso sta diventando un doppio).

Problemi correlati