2

为什么(float)1.11111111 = 1.11111116在 C# 中?

4

2 回答 2

9

浮点数具有 7 位精度,只是实际数字的近似值;相等和其他运算符并不总是像期望的那样工作,尽管它们工作得非常好。

必读链接:每个计算机科学家都应该知道的关于浮点运算的知识

浮点数上的Epsilon属性可用于帮助缓解浮点值的非常小的分数问题,尽管我从未使用过它。我承认我对浮点数的经验是有限的。

如果您需要更高的精度,double则更大,精度为15-16 位。如果您需要更高的精度,特别是跨基数为 10 的数字(例如用于货币计算),请使用decimal.

于 2012-04-17T08:16:44.027 回答
2

因为浮点数不是一个精确的值:维基百科解释得很清楚。还要确保您在 6:00 到 10:00 左右观看Jon Skeet 的视频。简而言之:对连续值使用浮点数/双精度数,对离散值使用小数/整数等。

于 2012-04-17T08:17:16.660 回答