Decimal

Decimal

Közepes

Utasítások

Valósítsd meg a tetszőleges pontosságú Decimal típust.

A lebegőpontos számok a nem egész valós számok leggyakoribb reprezentációja a számítástechnikában, és egy elterjedt szabvány írja le őket, az IEEE 754. Nagyon rugalmasak és sokoldalúak, de azért vannak korlátaik. Híres példa, hogy a lebegőpontos aritmetikában 0.1 + 0.2 != 0.3.

A probléma megoldása, hogy más, veszteségmentes módot találjunk a tetszőleges pontosságú, nem egész valós számok modellezésére. Ez memória- és feldolgozási sebesség szempontjából kevésbé hatékony lehet, mint a lebegőpontos számok; a cél a pontos eredmény.

Attól még, hogy a Decimal saját típus, számként kell tudnunk kezelni őket: a ==, <, >, +, - és * operátor mind működjön a Decimal értékeken úgy, ahogy elvárjuk. A gyorsaság kedvéért nem kell megvalósítanod az osztást, mert a tetszőleges pontosságú osztás nagyon gyorsan elszaladhat. (Hogyan ábrázolnád a tetszőleges pontosságú 1/3-ot?)

Rustban ahhoz, hogy ezeket a műveleteket saját típusokon is megkapd, implementálnod kell a hozzájuk tartozó trait-eket. Konkrétan legalább ezeket kell implementálnod: PartialEq, PartialOrd, Add, Sub és Mul. Szigorúan véve, mivel a Decimal számok teljes rendezést alkotnak, az Eq és az Ord implementálása is ajánlott, bár ezeket a trait-eket ezek a tesztek nem ellenőrzik.

Nagyon könnyű lenne ezt a feladatot a bigdecimal crate segítségével megvalósítani. Ne tedd ezt; valósítsd meg inkább magad.


Forrás

Peter Goodspeed-Niklaus
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Rust Exercism

Készen állsz elkezdeni a(z) Decimal feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Rust nyelvet 99 feladat segítségével, valódi emberi mentorálással, mindez ingyen.