gpt4 book ai didi

floating-point - 表索引中的 Lua 浮点错误

转载 作者:行者123 更新时间:2023-12-03 18:04:14 25 4
gpt4 key购买 nike

通常,我通过查看它们是否在一个非常小的数字范围内来比较两个浮点数。它不适用于表键,因为您不知道它们是否存在而不知道它们的键(如果这是有道理的)。

在 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')

基本上,如何在考虑浮点错误的同时找到表中的键?我希望它在不与表中的每个键进行比较的情况下工作,因此对于大表它仍然可以很快。可能已经有一个内置函数可以做到这一点,但我找不到。

任何帮助,将不胜感激!

最佳答案

如果您确实必须对来自不同来源的浮点数进行索引,我建议您将它们转换为固定格式的字符串,该格式的小数位数与您想要保留的小数位数相同,并使用这些字符串对表进行索引。

您甚至可以通过设置适当的 __newindex 来自动执行此操作。代理表的元方法。

关于floating-point - 表索引中的 Lua 浮点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com