【发布时间】:2015-11-11 19:58:57
【问题描述】:
乘法
(327.59 * 100.0)
产生一个小于 32759 的数字,这是为什么呢?又该如何避免呢?
【问题讨论】:
-
浮点值是这样工作的。为避免这种情况,请使用
decimal -
double本质上是一个二进制数。正因为如此,它不能完全代表327.59,而是你得到了接近它的东西。正如@Petr 所说,使用decimal来避免这种情况。decimal使用以 10 为底,因此327.59可以精确表示。供参考; Kahan 建议英特尔在 70 年代使用十进制表示浮点数。改变为时已晚,40 年后我们一次又一次地付出代价
标签: f# floating-point