【发布时间】:2014-07-25 20:13:19
【问题描述】:
我对数字 500000 使用 sqrt 函数。但是我得到的结果是 707.10681152344 这有点不准确,因为正确的数字应该是 707.106781187 (正如谷歌和任何其他计算器给出的那样)。为什么呢?我可能会错过一些东西,因为我对 LUA 很陌生。非常感谢
【问题讨论】:
-
确实很奇怪。我尝试了 Lua 5.1.4/5.2.3/5.3.0-work2 并得到了
707.10678118655。您使用的是哪个 Lua 版本? -
可能Lua使用的浮动指针格式不能表示这个特定的分数。也许您正在使用 32 位或其他东西。
-
通过一个小型 C 程序,我使用 32 位
float得到完全正确的707.1068115234375(与您的结果一致)。对于 64 位double,我得到的正是707.106781186547550532850436866283416748046875。显然您的 Lua 实现使用的是 32 位浮点。据我了解,它应该使用双精度(64 位);我有权访问的实现似乎可以正常工作。你在什么系统上? -
我在Lua live demo 中使用
print(math.sqrt(500000))得到707.10678118655。 -
@darkchampionz:您可以通过查询预定义的
_VERSION变量来了解您正在使用的 Lua 版本。