我刚刚注意到以下代码返回true:
Mathf.Approximately(0.0f, float.Epsilon); // true
Run Code Online (Sandbox Code Playgroud)
我已阅读Mathf.aboutly文档,其中指出:
roximately()比较两个浮点数,如果两个浮点数彼此之间的距离较小(Epsilon),则返回true。
而Mathf.Epsilon文件指出:
- anyValue + Epsilon = anyValue
- anyValue-Epsilon = anyValue
- 0 + Epsilon = Epsilon
- 0-Epsilon = -Epsilon
结果,我运行了以下代码,期望它是false,但它也会返回true。
Mathf.Approximately(0.0f, 2.0f * float.Epsilon); // true
Run Code Online (Sandbox Code Playgroud)
顺便说说:
Mathf.Approximately(0.0f, 2.0f * float.Epsilon); // true
Mathf.Approximately(0.0f, 3.0f * float.Epsilon); // true
Mathf.Approximately(0.0f, 4.0f * float.Epsilon); // true
Mathf.Approximately(0.0f, 5.0f * float.Epsilon); // true
Mathf.Approximately(0.0f, 6.0f * float.Epsilon); // true
Mathf.Approximately(0.0f, 7.0f * float.Epsilon); // true
Mathf.Approximately(0.0f, 8.0f * float.Epsilon); …Run Code Online (Sandbox Code Playgroud) c# floating-point precision floating-accuracy unity-game-engine