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
。也许这应该是一个注意点:它可能会阻止你问这个问题。
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
。也许这应该是一个注意点:它可能会阻止你问这个问题。