转换为base4时,Perl 6的精度会下降.如何保持精度?
'0.2322130120323232322110'.parse-base(4) --> perl6 output : 0.728295262649453 --> high precission value: 0.728295262649453434278257191181182861328125
问题是,当将0.728295262649453转换为base(4)时,输出不是原始数字.
0.72829526264945.base(4) --> output: 0.232213012032323232210333 --> original: 0.2322130120323232322110
如何在转换后获得相同的值?
解决方法
问题可能在于您创建“perl6输出”的方式:
say "0.2322130120323232322110".parse-base(4) # 0.72829526264945
这是因为,无论给出什么,都会调用.gist方法.或者你试图将其字符串化(调用.Str,它给出与.gist相同的结果).如果你在结果上调用.perl方法:
say "0.2322130120323232322110".parse-base(4).perl
你得到预期的0.728295262649453434278257191181182861328125. .perl方法返回一个您可以EVAL获取最初给定值的字符串.
无论如何,如果你这样做:
say "0.2322130120323232322110".parse-base(4).base(4)
你会看到你确实得到了原来的价值0.2322130120323232322110.我想这只是一个只是做它而不是说它的情况.