Компьютер с плавающей точкой - проблема с получением правильных результатов - PullRequest
0 голосов
/ 17 января 2011

Проблемы с вызовом.

Допустим, у меня есть теоретический калькулятор с плавающей запятой base 10 со следующими характеристиками

  • только 3 цифры для мантиссы
  • 1 цифра для показателя степени
  • Знак для мантиссы и экспоненты

Как бы эта машина вычисляла следующее?

300 + \sum_{i=1}^{100} 0.2

Правильный результат - 320. Результат машины - 300. Но почему? Не могу получить, где 20 пропадает без вести ...

Спасибо за ваше время.

Ответы [ 2 ]

3 голосов
/ 17 января 2011

Несмотря на ответ Дэвина, число 0.2 не 0: 2e-1 представимо в вашей системе.Здесь происходит то, что 300.2 не может быть представлен с полной точностью, поэтому 300 + 0.2 округляется до 300. Если вы сделаете это 100 раз, вы все равно получите 300 :-)

Ваша система должна быть в состоянииоднако правильно вычислить 300 + 100 * 0,2.

1 голос
/ 17 января 2011

Число 0,2 в этом калькуляторе равно 0, потому что оно должно оцениваться как 2 x 10 ^ (- 1), хотя показатель степени имеет только 1 цифру, что допускает диапазон от 0 до 1, поэтому -1 находится вне его диапазона , Недостаточное значение приводит к усечению, которое приводит к 0.

Итак, если мы сложим 0 сто раз и добавим результат к 300, мы получим 300.

...