How can I set the level of precision for Perl's bignum?
我正在尝试在 Perl 中使用 bignum 模块并希望设置精度。我知道这可以通过模块的 CPAN 页面上详述的单行来完成:
1
| $ perl -Mbignum=p,-50 -le 'print sqrt(20)' |
...这将打印出 20 到 50 位精度的平方根,但我想知道是否有任何方法可以在脚本中设置精度,例如:
1 2 3 4 5
| #!/usr/bin/perl
use bignum ;
setPrecision (-50);
print sqrt(20); |
到目前为止,我已经在这里、Google 和 PerlMonks 进行了搜索,但没有任何运气。提前致谢。
- 在 use bignum 行中将其指定为包的参数。
-
见 perldoc perlrun; perl -MPackage=foo,bar 相当于用 use Package qw(foo bar) 启动程序。
-
相关:stackoverflow.com/questions/1838808/...
Per Anon.\\的建议:
1 2 3 4 5 6 7 8
| #!/usr/bin/perl
use strict ;
use warnings ;
use bignum ( p => -50 );
print sqrt(20); |
您可能想查看 bignum 使用的 Math::BigFloat 和 Math::BigInt 的文档。
- 这对我不起作用,Perl 在这里是错误的:perl -e 'use bignum(p=>-100);printf("%1.50f\
",sqrt(23));' 输出 4.79583152331271911350540904095396399497985839843750 这是正确的:perl -Mbignum=p,-50 -le 'print sqrt(23)' 4.79583152331271954159743806416269391999670704190413 与 bc 的正确计算相比:echo"scale=50;sqrt(23)"|bc 4.79583152331271954159743806416269391999670704190412