Цитата:
|
при чем тут представления чисел в компьютере?
|
Цитата:
|
Почему при умножении числа 0,58 на 100 в среде JavaScript, в итоге получается число 57.99999999999999 ????
|
Смею заметить, что Вы плохо представляете себе о способах хранения вещественных чисел в памяти компьютера. Не смотря на то, что встречавшиеся Вам компьютерные программы умеет выполнять сложные вычисления с высокой точностью, все это только видимость.
Дело в том, что все вещественные числа хранятся в ячейках памяти определенного размера, определяемого количеством байт. А Вы знаете, что каждый байт это 8 битная ячейка. То есть под каждое число отводится определенный набор битов. Так как количество битов конечно, то и количество хранимых чисел ограничено. Следовательно, не все вещественные числа могут быть воспроизведены в памяти компьютера.
А теперь поговорим об "умных" программах, которые вычисляют правильно. Независимо от языка программирования все операции с вещественными числами выполняет процессор по определенному алгоритму и хранит их в памяти. То есть ограничения накладывает не язык, а сама машина. А то что Вы получаете верный результат в программе "Калькулятор", это всего навсего, программисты позаботились о выводе. То есть, "Калькуляторе" тоже посчитал 0,58 * 100 = 57.99999999999999, но перед тем как показать результат, округлил его до 58.