Tracks
/
Rust
Rust
/
Übungen
/
Dezimalzahl
Dezimalzahl

Dezimalzahl

Mittel

Anleitung

Implementiere einen Decimal-Typ mit beliebiger Genauigkeit.

Gleitkommazahlen sind die gebräuchlichste Darstellung nicht ganzzahliger reeller Zahlen in der Informatik und ein weit verbreiteter Standard, der durch IEEE 754 definiert wird. Sie sind sehr flexibel und vielseitig, haben aber auch einige Einschränkungen. Bekanntlich gilt in der Gleitkommaarithmetik: 0.1 + 0.2 != 0.3.

Die Lösung für dieses Problem ist, einen anderen, verlustfreien Weg zu finden, nicht ganzzahlige reelle Zahlen mit beliebiger Genauigkeit zu modellieren. Das kann in Bezug auf Speicher oder Rechengeschwindigkeit ineffizienter sein als bei Gleitkommazahlen; das Ziel sind exakte Ergebnisse.

Auch wenn Decimal ein eigener Typ ist, sollten wir ihn trotzdem wie eine Zahl behandeln können: Die Operatoren ==, <, >, +, - und * sollten mit Decimals alle wie erwartet funktionieren. Der Einfachheit halber musst du keine Division implementieren, denn eine Division mit beliebiger Genauigkeit kann sehr schnell aus dem Ruder laufen. (Wie stellst du 1/3 mit beliebiger Genauigkeit dar?)

In Rust erreichst du diese Operationen für eigene Typen, indem du die entsprechenden Traits für den Typ implementierst. Insbesondere musst du mindestens PartialEq, PartialOrd, Add, Sub und Mul implementieren. Genau genommen solltest du auch Eq und Ord implementieren, da die Werte vom Typ Decimal eine totale Ordnung bilden; von diesen Tests werden diese Traits allerdings nicht geprüft.

Es wäre sehr einfach, diese Übung mit dem Crate bigdecimal umzusetzen. Mach das nicht; implementiere es selbst.


Quelle

Peter Goodspeed-Niklaus
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Rust Exercism

Bereit, mit Dezimalzahl zu starten?

Melde dich bei Exercism an, um Rust mit 99 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.