Показать сообщение отдельно
  #6 (permalink)  
Старый 24.04.2011, 01:08
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

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

Дело в том, что все вещественные числа хранятся в ячейках памяти определенного размера, определяемого количеством байт. А Вы знаете, что каждый байт это 8 битная ячейка. То есть под каждое число отводится определенный набор битов. Так как количество битов конечно, то и количество хранимых чисел ограничено. Следовательно, не все вещественные числа могут быть воспроизведены в памяти компьютера.

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

Последний раз редактировалось with-love-from-siberia, 24.04.2011 в 01:11.
Ответить с цитированием