为什么(float)1.11111111 = 1.11111116
在 C# 中?
user488585
问问题
314 次
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 回答