我有一個雙重"138630.78380386264"
,我想將它轉換爲小數,但是當我這樣做時,我通過鑄造或使用Convert.ToDecimal()
來做它,並且我失去了精度。C#double至十進制精度損失
發生了什麼事?十進制和雙能容納這個數字:
double doub = double.Parse("138630.78380386264");
decimal dec = decimal.Parse("138630.78380386264");
string decs = dec.ToString("F17");
string doubse =DoubleConverter.ToExactString(doub);
string doubs = doub.ToString("F17");
decimal decC = (decimal) doub;
string doudeccs = decC.ToString("F17");
decimal decConv = Convert.ToDecimal(doub);
string doudecs = decConv.ToString("F17");
另外:我怎麼可以得到雙倍的ToString()
打印出相同的結果調試器顯示?例如138630.78380386264
?
[將C#中的小數轉換爲雙精度值導致差異]的可能重複(http://stackoverflow.com/questions/1584314/conversion-of-a-decimal-to-double-number-in- c-results-in-a-difference) –
那麼Convert.ToDecimal(somedouble)恰好等於(decimal)somedouble,所以沒有什麼意外。我不知道爲什麼這個演員輪到最後一個數字。 – harold
@harold你被騙了。它圓到最近。雙值完成386264和15 sig無花果小數結束3863. –