2011-01-17 3 views
0

Возникли проблемы с вызовом.Компьютер с плавающей точкой - проблема с возвратом правильных результатов

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

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

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

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

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

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

ответ

3

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

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

+0

как вы представляете 2e-1 с 1 цифрой в экспоненте? на самом деле, подумайте об этом, как вы представляете 300 с 1 цифрой в экспоненте? – davin

+0

@ davin: Одна десятичная цифра. – TonyK

+0

hmmm, должно быть, пропустил цифру знака для экспонента, хотя даже так, представляя 300? – davin

1

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

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

+0

Хотя, если честно, в нем есть много произвольных вещей, которые не всегда бывают. Обработка нижнего потока произвольна. Более того, наличие 1 цифры в двоичной системе проблематично, потому что 1 заканчивается тем, что является дополнением к своему двое и т. Д., Поэтому сценарий, который есть, немного глуп. – davin

+0

помните, что это база 10. Я обновлю свой вопрос. –

+0

@Francisco P. мой ответ предполагал, что представление было основанием 10, вы не согласны с моими рассуждениями? – davin

Смежные вопросы