Im Gegensatz zu double
und float
, decimal
ist ein BCD
(Binär Dezimal), so können Sie einen Trick spielen:
// Be sure, that your current culture uses "," (comma)
// as a decimal separator (e.g. Russian, ru-Ru culture)
decimal.TryParse("1,96", out myDecimalVar);
// add up a special form of zero
myDecimalVar += 0.00000m;
// 1,96000
Console.Write(myDecimalVar);
für Details, siehe bitte
https://msdn.microsoft.com/en-us/library/system.decimal(v=vs.110).aspx
der Binärdarstellung von einem Dezimalwert eines Zeichens 1-Bit besteht, eine 96-Bit-ganze Zahl und ein Skalierfaktor verwendet, um die 96-Bit-Integer zu teilen und Geben Sie an, welcher Teil davon ein Dezimalbruch ist. Der Skalierungsfaktor ist implizit die Nummer 10, zu einem Exponenten angehoben Bereich von 0 bis 28.
Also wir haben myDecimalVar
in 196000
ganze Zahl mit -5
Skalierungsfaktor gedreht wird.
Eine natürliche Weise ist jedoch zu Parse wie es ist, und repräsentieren, wie Sie mit Hilfe von Formatierungs wollen:
decimal.TryParse("1,96", out myDecimalVar);
...
Console.Write(myDecimalVar.ToString("F5")); // 5 digits after the decimal point
Das * ist * der Dezimalwert, den Sie haben, versuchen Sie, dies als eine Zeichenfolge irgendwo anzuzeigen? – Sayse
Was brauchen Sie? Dezimal oder Zeichenkette? –
Wenn Sie nur ein Zeichenfolgenformat mit N Dezimalstellen wünschen, schauen Sie hier: http://StackOverflow.com/Questions/3059759/double-Tostring-with-n-Number-of-Decimal-Places –