我使用 Raku 进行一些计算,因为它有很好的数字类型。但是,我在使用“.raku”时遇到问题
say (1/6+1/6).raku
#<1/3>
我们得到这个。然而,
say (1/10+1/10).raku
#0.2
这是一个错误吗?我期待 <1/5>。发生什么了?
最佳答案
在乐,0.2
构造一个 Rat
,因此产生与写入 1/5
完全相同的结果(将不断折叠)或 <1/5>
(字面形式)。您只能在指定指数的情况下获得浮点数(例如, 2e-1
)。.raku
(以前称为 .perl
)方法的工作是产生一些东西,如果 EVAL
将产生相同的值。 'd。在1/5
的情况下,这可以精确地表示为小数,所以它会产生 0.2
.当小数形式不能往返时,它只采用小数表示。
您始终可以使用 .numerator
恢复分子和分母和 .denominator
根据需要格式化的方法。另外 .nude
方法返回分子和分母的列表,可以将其与 /
连接起来。如果需要:
say (1/6+1/6).nude.join("/"); # 1/3
say (1/10+1/10).nude.join("/"); # 1/5
关于raku - Raku 中的有理数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60895698/