我在redis中运行一个lua脚本,如下所示:
eval“返回字符串(tonumber(ARGV1))”0 1538409827183989630
它应该返回1538409827183989630,但是返回这个1.538409827184e+18,它将掉下最后几个纳米秒数(它是一个以纳米秒为单位的时间戳)。
假设我需要纳米秒的精度,那么正确的方法是什么,因为我在比较时间戳。
发布于 2020-12-30 12:43:25
Lua数字有两个子类型,整数和浮点数,Lua自动选择。
少有的(如果不是唯一的话)需要关注这种差异的情况之一是当您想要将一个数字转换为一个字符串时。
print(1538409827183989630)将打印1538409827183989630
print(1538409827183989630.0)将打印为1.538409827184e+18
如果要确保得到相同的输出,则必须显式地格式化字符串。
local int = 1538409827183989630
local float = 1538409827183989630.0
print(string.format("%d", int))
print(string.format("%d", float))产出:
1538409827183989630
1538409827183989504您将注意到,由于浮点->整数转换,这两个数字之间会有差异。
https://stackoverflow.com/questions/65505477
复制相似问题