【发布时间】:2018-11-05 22:13:06
【问题描述】:
如果我在 C# 中评估以下内容,则结果为 true:
(decimal)0.1F == 0.1M
为什么转换为浮点数并返回十进制数不会引入任何舍入错误?
【问题讨论】:
-
(decimal)somethingF 并不总是等于 somethingM - 由于浮点的工作方式。然而,这并不意味着它们将永远相等。
-
这感觉像是一个 XY 问题 - meta.stackexchange.com/questions/66377/what-is-the-xy-problem。为什么这对你很重要?
-
@mjwills 因为浮点数中的 0.1 实际上是 0.100000001490116119384765625,所以我希望它们不相等。
-
@Aae 那你为什么使用浮点数而不是双精度数?
-
此外,它们对单个值的行为方式并不能代表它们对任意值的行为方式。
标签: c# floating-point rounding-error