Треки
/
Rust
Rust
/
Вправи
/
Десяткове число
Десяткове число

Десяткове число

Середня

Вказівки

Реалізуйте тип 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

Час розпочати Десяткове число?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Rust, а також 99 вправ та справжнє наставництво від людей, і все це безкоштовно.