在unity3d中浮点值不正确C#

时间:2016-03-25 09:49:20

标签: c# unity3d

我使用unity3d引擎在C#中进行了测试。

像这样:

float dt = 22.05f + 0.05f;

dt值应为22.1f,但我在VS2015中调试dt值,dt值为22.0999985f。我不知道为什么它不是我预期的正确值。

1 个答案:

答案 0 :(得分:0)

因为浮点数是二进制的 - 您无法准确表达每个十进制数。不在分数方面,它必须由二进制的部分构成:1 / 2,1 / 4,1 / 8等。

.1(1/10)只能近似。

这导致了各种各样的小问题,程序员 - 主要是那些拒绝通过阅读详细解释事物的书籍来学习编程的人 - 会陷入其中。

另一个项目是你永远不应该将浮点数与常数进行比较 - 如果计算浮点数,它可能会略微关闭。您总是比较两个值之间的差异是否小于给定的小ε(Abs(a-b))