perl6精度base4转换

perl6 precision base4 conversion

Perl 6 在转换 to/from base4 时失去精度。如何保持精度?

'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

如何在 to/from 转换后得到相同的值?

问题可能在于您创建 "perl6 output":

的方式
say "0.2322130120323232322110".parse-base(4)    # 0.72829526264945

这是因为 say 根据给定的任何内容调用 .gist 方法。或者您尝试将其字符串化(调用 .Str,结果与 .gist 相同)。如果您要对结果调用 .perl 方法:

say "0.2322130120323232322110".parse-base(4).perl

得到预期的0.728295262649453434278257191181182861328125.perl 方法 returns 一个字符串,您可以 EVAL 获取最初给定的值。

无论如何,如果你这样做:

say "0.2322130120323232322110".parse-base(4).base(4)

您将看到您 取回原始值0.2322130120323232322110。我想这只是一个只做而不是说的例子。 :-)

一个 可以 争辩说 Rat 上的 .Str 应该使用 .perl 而不是 .gist。也许这应该是一个注意点:它可能会阻止你问这个问题。