Если десятичные числа не могут быть представлены в двоичном виде, то почему компьютеры не хранят числа как доли двух целых чисел, которые МОЖЕТ быть точно представлены?
- Каждый раз, когда число используется для отображения где-либо, оно может быть преобразовано в неточное число с плавающей запятой.
- Каждый раз, когда он используется для дальнейших расчетов, вы включаете дробь.
Это должно в корне решить проблему неточности, но не все так гениально, так что же не так с теорией?
например вы хотите сохранить число 0,1 и использовать его для дальнейших вычислений. Вместо того, чтобы хранить его как 0,1, вы сохраняете его как 1/10 (поэтому вам нужно еще несколько байтов для хранения дробей). Затем, если вам нужно умножить его на другое число, скажем, на 5, вы также умножаете ошибку на 3. Если вы умножаете 1/10 на 3, вы получаете 1/10*3 = 3/10. Всякий раз, когда вам нужно отобразить его, 3/10 может стать неточным. До этого времени не может быть и речи о неточности.