Decimal

Decimal

中級

説明

任意精度のDecimal型を実装します。

浮動小数点数は、コンピューターで整数以外の実数を表す方法として最も一般的なものであり、IEEE 754で定義された共通規格でもあります。非常に柔軟で汎用性が高い一方で、いくつか制約もあります。有名なところでは、浮動小数点数の計算で0.1 + 0.2 != 0.3となってしまいます。

この問題を解決するには、任意精度の非整数の実数を、情報を失わずにモデル化する別の方法を探すことになります。メモリや処理速度の面では浮動小数点数よりも効率が悪いかもしれませんが、目指すのは正確な結果を得ることです。

Decimalは独自の型ですが、それでも数値として扱えるべきです。==、<、>、+、-、*の各演算子は、どれもDecimalに対して期待どおりに動作するはずです。手間を省くため、除算は実装しなくてもかまいません。任意精度の除算は、あっという間に手に負えなくなるからです。(任意精度の1/3はどうやって表せばよいのでしょうか?)

Rustでは、独自の型でこれらの演算を可能にするには、その型に対応するトレイトを実装します。特に、少なくともPartialEq、PartialOrd、Add、Sub、Mulを実装する必要があります。厳密に言えば、小数は全順序をなすので、EqとOrdも実装すべきですが、これらのテストではそれらのトレイトは確認されません。

この演習はbigdecimalクレートを使えばとても簡単に実装できます。そうしないでください。自分で実装しましょう。


出典

Peter Goodspeed-Niklaus
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Rust Exercism

Decimalを始める準備はできましたか?

Exercismに登録すれば、99個の演習、そして本物の人間によるメンタリングとともに、Rustを学んでマスターできます。すべて無料です。