Андрей
Высший разум
(480417)
9 месяцев назад
В те далёкие времена, когда вычислительные машины были большими и медленными, компьютеры, предназначенные для финансовых расчётов поддерживали аппаратную реализацию специального формата дробных чисел: двоично-десятичные числа, предназначенные для точных вычислений с десятичными дробями. В них для записи десятичных цифр, знака числа и точки использовалось по 4 бита на символ. Т.е. в 1 байт записывалось 2 символа числа.
Но по мере роста производительности компьютеров и увеличения длины аппартно поддерживаемых целых чисел надобность в отдельном аппаратном типе чисел для финансовых расчётов пропала.
А для тех редких случаев, когда требуются точные вычисления рациональных чисел, практически все современные языки программирования содержат специальные модули, программно реализующие как десятичные вычисления с фиксированной точкой, так и вычисления с дробными (числитель / знаменатель) числами.
nds
Просветленный
(26224)
9 месяцев назад
Это особенность реализации чисел с плавающей точкой и от языка не зависит, а только от оборудования.
Они были так задуманы для быстрой обработки при недостатке оперативной памяти.
Сейчас возможно было бы разумно перейти на числа с фиксированной точкой но обратная совместимость не пускает.
2 2Ученик (167)
9 месяцев назад
а почему не сделали как у меня, я ведь не один явно придумал данный вид реализации
Celtic Hammer
Мудрец
(17708)
9 месяцев назад
Это во всех языках так. Число 0.3 в двоичной системе невозможно представить абсолютно точно, вот и получается такой диковинный результат
2 2Ученик (167)
9 месяцев назад
так почему её не записывают вот так, ведь в этой системе её можно представить, почему никто не догадался её использовать, или невозможно мою систему использовать
11111100 00000000 (6)
11111110 00000000 (7)
0000000 00000000 (0)
1110000 00000000 (3)
11111111 11111111 (.)
1111000 00000000 (4)
11000000 00000000 (2)
10000000 00000000 (1)
00000000 00000000 (0)
11111111 10000000 (9)