perl - Math::BigInt:进行两次连续算术运算的结果不是预期的
问题描述
我试图保持两个连续的操作$x->badd(1)
并$x->bmuladd(2,-1)
使用 Math::BigInt
如下代码所示:
use strict;
use warnings;
use Math::BigInt;
my $k = '1329227995784915872903807060280344577';
my $x = Math::BigInt->new($k);
my $y = $x->badd(1);
my $z = $x->bmuladd(2,-1);
print "value to variable z $z\n";
print "value to variable y is $y\n";
但我不明白输出如下所示的原因:
value to variable z 2658455991569831745807614120560689155
value to variable y is 2658455991569831745807614120560689155
代替:
value to variable z 2658455991569831745807614120560689153
value to variable y is 1329227995784915872903807060280344578
我只能获取变量的值,$z
或者$y
如果我分别从以下两种形式之一获取:
1)
use strict;
use warnings;
use Math::BigInt;
my $k = '1329227995784915872903807060280344577';
my $x = Math::BigInt->new($k);
#my $y = $x->badd(1);
my $z = $x->bmuladd(2,-1);
print "value to variable z $z\n";
#print "value to variable y is $y\n";
或者 ...
2)
use strict;
use warnings;
use Math::BigInt;
my $k = '1329227995784915872903807060280344577';
my $x = Math::BigInt->new($k);
my $y = $x->badd(1);
#my $z = $x->bmuladd(2,-1);
#print "value to variable z $z\n";
print "value to variable y is $y\n";
我做错了什么或我没有做什么?
编辑更新:
我相信我需要了解变量值的操作(也就是说,我相信$x
第一次操作的结果仍然存在,并且有必要使用它$x->bsub(1)
来恢复其原始状态),因为按照以下方式我能够得到预期的结果:
use strict;
use warnings;
use Math::BigInt;
my $k = '1329227995784915872903807060280344577';
my $x = Math::BigInt->new($k);
my $y = $x->badd(1);
print "value to variable y is $y\n";
my $u = $y->bsub(1);
my $z = $u->bmuladd(2,-1);
print "value to variable z $z\n";
虽然...如果我把print "value to variable y is $y\n";
最后一行,如下图,那么返回没有预期的结果:
use strict;
use warnings;
use Math::BigInt;
my $k = '1329227995784915872903807060280344577';
my $x = Math::BigInt->new($k);
my $y = $x->badd(1);
my $u = $y->bsub(1);
my $z = $u->bmuladd(2,-1);
print "value to variable y is $y\n";
print "value to variable z $z\n";
解决方案
推荐阅读
- python - 如何在不使用表单的情况下通过 django 中的 html 模板将数据发布到数据库中
- javascript - 如何让 css 影响最终结果?
- prolog - 如何获得所需的输出
- java - 当用户触摸屏幕上的任意位置时,如何一一填充回收站视图?
- pdf - Ghostscript PDF to PCL 将像素推到顶部
- javascript - 为什么 "\a" 和 "a" 在 JavaScript 中是一样的?
- corda - java.lang.IllegalArgumentException:未为以下事务参与者提供流会话:
- java - 如何获取当前文件当前行的Git提交信息
- javascript - 在angularjs $modal中使用resolve等待RESTful结果
- android - 透明覆盖在画布上绘图后失去透明度