我在Perl中编写一个需要长数据类型而不是整数的应用程序。我怎样才能做到这一点。例如;
my $num = sprintf('%ld', 27823221234);
print $num;
输出不是很长,而是整数。
答案 0 :(得分:12)
您的选择是:
<强>更新强> 啊,你也可以使用浮点数而不是整数:
printf("%.0f", 2**50)
答案 1 :(得分:1)
在你的情况下27823221234实际上表示为double,所以当你尝试输入到sprintf时你得到-1
my $x = 27823221234;
my $num = sprintf('%lf', $x);
print $num, "\n";
收益率
27823221234.000000
如果你想用大整数做数学运算,可以考虑使用Math :: Bigint模块。
答案 2 :(得分:1)
答案 3 :(得分:1)
以下是一些代码,用于说明Perl的行为 - 从您的示例中派生出来:
use strict;
use warnings;
my $num = sprintf("%ld", 27823221234);
print "$num\n";
my $val = 27823221234;
my $str = sprintf("%ld", $val);
printf "%d = %ld = %f = %s\n", $val, $val, $val, $val;
printf "%d = %ld = %f = %s\n", $str, $str, $str, $str;
使用64位Perl,可以得到:
27823221234
27823221234 = 27823221234 = 27823221234.000000 = 27823221234
27823221234 = 27823221234 = 27823221234.000000 = 27823221234
如果你真的需要大数字(数百个数字),那么请查看支持它们的模块。例如: