Я знаю, что это немного гипотетически, но мне интересно, почему ни один из известных мне языков не делает этого.
Например, вы хотите сохранить 1/3. Дайте программисту возможность указать его как 1/3 и сохранить 1 и 3. Что-то вроде
struct float {
int numerator;
int denominator;
};
Арифметика рациональных чисел становится действительно простой и значительно более точной!
Это решило бы так много проблем, связанных с точностью и ограничениями хранения чисел с плавающей запятой, и я не вижу, чтобы это создавало какие-то новые проблемы!
Отсюда мой вопрос: Почему рациональные числа не реализуются и не хранятся в виде дробей с нулевой потерей информации?
Как спрашивал Джо, и другие могли бы также указать, я имею в виду не замену существующей системы, а ее дополнение.
В: Как вы храните pi
?
A: Много раз я просто сохранял 1/3
, а не пи
. pi
можно хранить по-старому, а 1/3
по-новому.