“意外”;表索引为“nan”;错误lua
我有电话“意外”;表索引为“nan”;错误lua,lua,love2d,Lua,Love2d,我有电话 distanceTable[ tonumber(distance) ] = obj 这会引发“表索引为nan”错误。当距离为67.882250993909时。类型(距离)返回“数字” 距离是一个数字,为什么会出现此错误?正如错误消息所说,NaN不能是表中的键,类似于nil。我认为这种限制是由于NaN有许多可能的二进制值,并且根据IEEE标准,NaN!=NaN 由于tonumber在给定字符串时无法返回NaN,因此它必须来自距离。您使用的操作的一个结果可能未定义,因此返回NaN。您可以
distanceTable[ tonumber(distance) ] = obj
这会引发“表索引为nan”错误。当距离为67.882250993909时。类型(距离)返回“数字”
距离是一个数字,为什么会出现此错误?正如错误消息所说,NaN不能是表中的键,类似于
nil
。我认为这种限制是由于NaN有许多可能的二进制值,并且根据IEEE标准,NaN!=NaN
由于
tonumber
在给定字符串时无法返回NaN,因此它必须来自距离
。您使用的操作的一个结果可能未定义,因此返回NaN。您可以使用distance~=distance
检查NaN并相应地处理它,或者阻止产生该值的计算。NaN
是一个数字;例如,0/0
返回nan
,type(0/0)
是的“number”
。您是否可以提供更多代码来显示发生错误的位置以及出现错误时距离的值是多少?为什么要使用tonumber(distance)
?距离不是已经是一个数字了吗?如果distance
是一个字符串,那么type(distance)
可能不是number
。tonumber(distance)是用于演示的。这很奇怪,因为我不记得从tonumber
得到nan
,只有一个非nan
数字或nil
。我想知道发生了什么。@cyclaminit,tonumber(0/0)
givesnan
tonumber
在给定nan时返回nan,例如在tonumber(0/0)
中。