我想通過Convert.ToDecimal函數將double轉換爲小數。 問題是,.net根據原始雙變量的大小選擇省略小數位。Double Convert.ToDecimal控制十進制數字
看看下面的例子:
double d = 2999247013.972682;
decimal convDecimal = Convert.ToDecimal(d);
decimal realDecimal = 2999247013.972682M;
Console.WriteLine(d);
Console.WriteLine(convDecimal);
Console.WriteLine(realDecimal);
將會產生以下的輸出:
2999247013,97268 // comments: (actual value 2999247013,972682)
2999247013,97268 // comments: (actual value 2999247013,97268)
2999247013,972682 // comments: (actual value 2999247013,972682)
( '' 是當前語言環境的小數點分隔符)
什麼,我想實現方法是使用Convert.ToDecimal(d)並獲取十進制數2999247013,972682。
任何想法的人?
因此,據我所知,問題是Convert.ToDecimal無法處理超過15個有效數字,即使Decimal作爲類型明確支持此值。 – Entrodus
問題不在於'Decimal'可以支持更多數字,而是'Double'值是有限的。小數比雙精度更精確,所以限制因素是你傳入方法的兩倍。 – keyboardP
好的。事情現在開始有意義。感謝您的所有信息。 – Entrodus