试图理解 Mathf.Approximately [重复]
Posted
技术标签:
【中文标题】试图理解 Mathf.Approximately [重复]【英文标题】:Trying to understand Mathf.Approximately [duplicate] 【发布时间】:2022-01-17 07:24:53 【问题描述】:当 Mathf.Approximately 给出 true 时,有人可以举一个最简单的例子吗?
尝试以下,总是错误的:
Debug.Log(Mathf.Approximately(0.0001f, 0.0f)); // False
Debug.Log(Mathf.Approximately(0.00000001f, 0.0f)); // False
Debug.Log(Mathf.Approximately(0.00000000000001f, 0.0f)); // False
【问题讨论】:
***.com/questions/58599418/… 【参考方案1】:documentation 表示如果它们“在一个非常小的值 (epsilon) 内”它们是相等的。
Epsilon is documented 为“浮点数可以具有不同于零的最小值”。
那有多小? FloatMinNormal
或 FloatMinDenormal
取决于 IsFlushToZeroEnabled
,如您所见,from source code 大约为 1e-38,比0.00000000000001f
小很多。
对于非零值,精确计算取决于数字的数量级,you can check out the source code for the precise formula。
有些数字(例如 0.1)不能准确地用浮点数表示。这就是为什么Approximately
比直接相等更有用的原因。然而,这是一个复杂的话题,需要的不仅仅是一个 SO 答案来充分发展。如果您想了解更多信息,不妨从这里开始:https://floating-point-gui.de/
【讨论】:
谢谢,这让我对这个话题更清楚了。以上是关于试图理解 Mathf.Approximately [重复]的主要内容,如果未能解决你的问题,请参考以下文章