2016-10-16 2 views
0

t представляет собой массив из двух цифр float64. На вводе t в IPython 2.7, он дает следующий результат:печать числа и запись в интерпретаторе ipython дает разные выходы

array([ 60.211127, 71.08120185]) 

print t дает

[ 60.211127, 71.08120185] 

print t[0] дает

60.211127 

но ... t[0] дает

60.211126999999998 

в качестве выхода.

P.S.

from decimal import * 
Decimal(t[0]) 

дает

Decimal('60.21112699999999762212610221467912197113037109375') 

как output.Why это происходит так?

+0

'print' использует Формат 'str', простой интерактивный' out' использует версию 'repr'. Добавьте к этому различные условные обозначения для 'array' (' numpy'?) И Python float. – hpaulj

ответ

0

Проблема, которая, как я думаю, у вас есть, заключается в том, что в некоторых форматах данных нет возможности приблизить некоторые значения. (Так же, как вы не можете показать 1/3, потому что вы просто .3333333333333 навсегда ...) Существует подробнее here

полезная функция может быть repr() подробнее here