Perl 长数据类型
我正在用 Perl 编写一个应用程序,它需要长数据类型而不是整数。我怎样才能做到这一点。例如;
my $num = sprintf('%ld', 27823221234);
print $num;
输出不是长整型,而是整数。
I am writing an app in Perl that requires long data type instead of integers. How can I achieve this. For example;
my $num = sprintf('%ld', 27823221234);
print $num;
The output is not a long, but an integer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您的选择是:
更新:
啊,你也可以使用浮点数代替整数:
IIRC,在大多数当前架构上,浮点数可以精确地表示高达 2**54-1 的整数。
Your options are:
update:
ah, you can also use floats instead of integers:
IIRC, on most current architectures, floats can represent integers up to 2**54-1 precisely.
在您的情况下 27823221234 实际上表示为 double,因此当您尝试输入 sprintf 时,您会收到 -1
收益,
如果您想对大整数进行数学运算,请考虑使用 Math::Bigint 模块。
in your case 27823221234 is really represented as double, so when you try to feed to to sprintf you receive -1
yields to
if you want to do math operations with large integers, consider using Math::Bigint module.
下面是一些代码,说明了 Perl 的一些行为方式 - 源自您的示例:
使用 64 位 Perl,结果是:
如果您确实需要大数字(数百位数字),那么请查看支持它们的模块。例如:
Here is some code that illustrates some of how Perl behaves - derived from your example:
With a 64-bit Perl, this yields:
If you really need big number (hundreds of digits), then look into the modules that support them. For example:
你可能很困惑。 Perl 本身支持“长”大小的整数数学,但我不认为它的内部表示是你的问题所在。你期望你的输出是什么样的?
You are probably confused. Perl natively supports "long"-sized integer math, but I don't think its internal representation is where your problem is. What are you expecting your output to look like?