【发布时间】:2012-05-04 15:04:35
【问题描述】:
我正在做某事,但遇到了一个我不明白的问题。
double d = 95.24 / (double)100;
Console.Write(d); //Break point here
控制台输出为 0.9524(如预期),但如果我在停止程序后查看“d”,它会返回 0.95239999999999991。
我已经尝试了所有可能的演员,结果是一样的。问题是我在其他地方使用了“d”,这个精度问题使我的程序失败了。
那么它为什么要这样做呢?我该如何解决?
【问题讨论】:
-
在 SO 上有很多像这样的浮点数问题
-
猜测 Double.ToString 的默认格式仅显示 4 位小数。如果你想要一个精确的表示,你应该移动到十进制类型(浮点数和双精度不是精确的表示)
标签: c# double precision divide