簡體   English   中英

C#顯示6位小數返回錯誤值

[英]C# show 6 decimals returns wrong value

C#控制台應用程序。 我有以下代碼:

next = 758550
next = (double)next / Math.Pow(10, 6);
file.WriteLine(next);

而不是返回0.758550它返回0.75855(最后沒有零),即使我指定它是雙倍。

是的, double不會保留尾隨零。 它的意思是一個大小與數值相關的類型,而不是精確的十進制數字。

但是, decimal 確實保留尾隨零,所以如果你寫:

decimal next = 758550m;
next = next * 0.000001m;
file.WriteLine(next);

......這會告訴你你想要什么。 有趣的是,乘以1000000將不會在這里工作。 我懷疑該算法是沿東西線“保留盡可能多的微不足道的小數位數為在任何一個操作數”,但它並不完全清楚。

或者,您可以為double值指定自定義格式:

file.WriteLine(next.ToString("0.000000"));

要么:

file.WriteLine("{0:0.000000}", next);

您應該確定哪種類型最適合您。 根據經驗,“人為”值 - 尤其是貨幣 - 最適合用decimal “自然”值 - 例如距離,重量等 - 最適合表示為double

因為在0.7585500.75855沒有差異,所以最后的0是無關緊要的。 你指定格式來獲得最后的零。

string strForDisplay = next.ToString("0.0000000");

以上將給你最后0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM