【发布时间】:2012-10-11 09:41:31
【问题描述】:
通常,我通过查看它们是否在一个非常小的数字范围内来比较两个浮点数。它不适用于表键,因为您不知道它们是否存在而不知道它们的键(如果这有意义的话)。
在 64 位计算机上使用 lua 5.1 的示例:
a, b, c = 1.7, -0.8, -0.4
d = a + b + c -- prevents constant folding
print(string.format('%1.20f', d)) -- 0.49999999999999989000 (around 0.5)
assert(d ~= 0.5)
t = {[0] = 'foo', [0.5] = 'bar'}
print(t[d]) -- nil (I want it to print 'bar')
基本上,如何在考虑浮点错误的同时找到表中的键?我希望它在不与表中的每个键进行比较的情况下工作,因此它仍然可以在大表中快速运行。可能已经有一个内置函数可以执行此操作,但我找不到。
任何帮助将不胜感激!
【问题讨论】:
标签: floating-point lua