gpt4 book ai didi

perl - 这个 Perl 格式错误的原因是什么?

转载 作者:行者123 更新时间:2023-12-01 04:44:26 26 4
gpt4 key购买 nike

$str =sprintf "%014ld", "2555600000";
print $str;

这给了我结果:

-0001739367296

负数。这种行为有原因吗?

最佳答案

2555600000 太大,无法放入 32 位有符号整数。转换为二进制,它是 10011000 01010011 01011100 10000000,当解释为带符号的 32 位整数时,它代表 -0001739367296

您的选择是:

my $str = sprintf("%014u", 2555600000);     # unsigned integer
my $str = sprintf("%014.0f", 2555600000); # floating point
my $str = sprintf("%014s", 2555600000); # string

第一个适用于这个数字,但不适用于更高的数字。对于非常大的数字,第二个可能变得不准确。 (但是对于标准的 float “double”,您应该很容易准确地使用您使用的 14 位数字。第三个可能是最简单的,只需将其视为一个字符串而忘记它是一个数字。

要查看您的版本使用了多少位,您可以运行 perl -V。示例输出:

...
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
...

所以我的 Perl 使用 4 字节、32 位整数。

关于perl - 这个 Perl 格式错误的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167004/

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