[英]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.758550
和0.75855
沒有差異,所以最后的0
是無關緊要的。 你指定格式來獲得最后的零。
string strForDisplay = next.ToString("0.0000000");
以上將給你最后0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.