我对 perl 中 64 位整数的内部表示感到困惑。
Ubuntu 12.04,perl 5.16.0:
print 18440000000000001000 . "\n";
print 18450000000000001000 . "\n";
print -9220000000000001000 . "\n";
print -9230000000000001000 . "\n";
输出:
18440000000000001000
1.845e+19
-9220000000000001000
-9.23e+18
显然正数溢出并被强制为浮点数,相应的精度损失为 2^64。但是 - 这没有为符号位留下空间,那么如何表示高达 -2^63 的负数?