【问题标题】:How can I set the level of precision for Perl's bignum?如何设置 Perl 的 bignum 的精度级别?
【发布时间】:2010-01-25 22:57:58
【问题描述】:

我正在尝试在 Perl 中使用 bignum 模块并希望设置精度。我知道这可以通过module's CPAN page 中详细说明的单行来完成:

$ perl -Mbignum=p,-50 -le 'print sqrt(20)'

...这将打印出 20 到 50 位精度的平方根,但我想知道是否有任何方法可以在脚本中设置精度,例如:

#!/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) 启动程序。

标签: perl precision bignum


【解决方案1】:

Per Anon. 的建议:

#!/usr/bin/perl

use strict;
use warnings;

use bignum ( p => -50 );

print sqrt(20);

您可能希望查看 bignum 使用的 Math::BigFloatMath::BigInt 的文档。

【讨论】:

  • 这对我不起作用,Perl 在这里错了:perl -e 'use bignum(p=>-100);printf("%1.50f\n",sqrt(23));' 输出 4.79583152331271911350540904095396399497985839843750 这是正确的:perl -Mbignum=p,-50 -le 'print sqrt(23)'4.79583152331271954159743806416269391999670704190413 与 bc 的正确计算相比:echo "scale=50;sqrt(23)"|bc@987654329 @
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多