Таких типов очень много для многих языков. Насколько я знаю, вот как это работает.
Rational
просто хранит две отдельные цифры для числителя и знаменателя (например, 3 и 10 для 0,3).
BigNum
хранит каждую цифру числа в каком-то «массиве» и выполняет арифметику столбцов, как это обычно делают люди. Например, 0,1 сохраняет как [0, '.', 1]. Если мы захотим добавить к нему 0,2, получится что-то вроде этого:
[0, '.', 1]
+ [0, '.', 2]
= [0, '.', 3]
Я прав? Есть ли другая популярная арифметика произвольной точности? Если да, то как он называется?
Я не говорю о какой-то конкретной реализации, а скорее об общей идее того, что она обычно делает.
BigNum
, но сомневаюсь, что десятичные дроби хранятся в виде текста. Дело в том, чтоBigNum
используется для десятичных значений, аRational
— для дробей (рациональных чисел).Rational
подходит для таких значений, как1/3
, потому что для рациональных чисел1/3 * 6
действительно возвращает2
. - person Rudy Velthuis   schedule 13.08.2016BigNum
вместоRational
? - person FrozenHeart   schedule 13.08.2016Rational
также принимают десятичные строки - person FrozenHeart   schedule 13.08.2016