127.0.0.1:7501>評価 "リターン{1,2,9223372036854775807}" 0
1)(整数)1
2)(整数)2を扱う場合evalは間違った値を返します
3)(整数)-9223372036854775808
のRedisのLUA - はLong.MAX_VALUE
この奇妙な動作を助けてください。私は、luaはある精度を失うことによって、10^15を超える数だけしか表現できないことを知っていました。 私は、 "9.2233720368548e + 18" のような戻り値を期待していましたが、負の数値は返しませんでした。
またFYI 127.0.0.1:7501>評価 "リターン{1,2、のtoString(9223372036854775807)}" 0
1)(整数)1
2)(整数)2
3)「9.2233720368548 E + 18"
127.0.0.1:7501>評価 "リターン{1,2、TONUMBER(9223372036854775807)}" 0
1)(整数)1
2)(整数)2
3) (整数)-9223372036854775808
私が知っているのは、ダブルビットで符号ビットが正のときにオーバーフローする理由は、 が赤字に戻ったときです。 – sumanth232
整数と浮動小数点のエンコーディングは異なります。この型変換は、明示的に 'tostring'を使用しない限り、デフォルトで整数になります。符号付き整数の表現としてFPエンコーディングを使用すると、予期しない結果が生じます。 –