2016-12-21 2 views
1

Я определил класс, содержащий атрибуты, и функцию печати, которая печатает атрибуты класса на консоли. Если я вызываю функцию печати, например: object.printing_function(), печатается желаемое значение, например. 0,24Печать значений в iPython

Однако, когда я получаю доступ к атрибуту без класса, например: object.attribute, возвращаемое значение равно 0.23999999999999.

Печать (object.attribute) дает 0,24, а также, как я могу изменить объект. Атрибут для возврата 0,24?

Я использую: Spyder (Anaconda) Python 3.5

+1

Это не 0,24. Это число не существует в отношении компьютера. – TigerhawkT3

+0

Okey, я импортирую pd dataframe из файла csv. Файл csv показывает правильное число (0,24), но импортированный блок данных действительно показывает 0.23999999. –

+0

См. Ответ @ TigerhawkT3. Вы видите представление с плавающей запятой. –

ответ

0

Если атрибут является числом с плавающей точкой вы будете иметь формат вывода, если вы обращаетесь атрибут непосредственно:

val = 0.23999999999999 
print("{:.2f}".format(val)) 

# Output 
# '0.24' 
1

Вы можете использовать Decimal класс, который может представлять десятичных чисел именно:

>>> import decimal 
>>> print('{:.20f}'.format(0.24)) 
0.23999999999999999112 
>>> print('{:.20f}'.format(decimal.Decimal('0.24'))) 
0.24000000000000000000 

As комментарии указывают, что 0,24 как float не могут быть представлены точно в двоичном формате, так же как 1/3 не может быть представлено точно в десятичной форме.

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