回答:
Rakuでは、を0.2
作成しRat
、書き込み1/5
(定数の折りたたみ)または<1/5>
(リテラル形式)とまったく同じ結果を生成します。指数を指定した場合にのみ浮動小数点を取得します(たとえば、2e-1
)。
.raku
(旧として知られている.perl
方法の仕事)場合は、同じ値をラウンドトリップして生成されます何か作ることであるEVAL
D「を。の場合1/5
、それは10進数として正確に表すことができるため、が生成され0.2
ます。小数形式が往復しない場合にのみ、小数表現に頼ります。
.numerator
と.denominator
メソッドを使用して、いつでも分子と分母を希望どおりにフォーマットできます。さらに、.nude
メソッドは分子と分母のリストを返します。/
必要に応じて、それらをaと結合できます。
say (1/6+1/6).nude.join("/"); # 1/3
say (1/10+1/10).nude.join("/"); # 1/5
.nude
意図せずおかしいメソッド名
こんにちは@ milou123私はまた、rakuが10進数表現に戻ることに少し驚いていました。たとえば、分数演算を教えるなどの一部のコンテキストは、「キープラット」モードを使用するとメリットがあることがわかります。そうは言っても、最終的には.rakuを実行する方法は1つしかなく、10進数がデフォルトの表現であることは理にかなっています。
もちろん、rakuでは、少しだけ言語を変更することもできます。この場合、私は新しい「→」後置演算子を発明しました...
multi postfix:<→> ( Rat:D $r ) { $r.nude.join("/") }
say (1/5+1/5)→; # 2/5
組み込みの「raku」メソッドを同様の方法でオーバーライドできるかどうかを考え出すには、私は賢くありません。簡潔に行う方法についてのアドバイスを楽しみにしています...