2015-08-01 3 views
-2

Вот мой входОкругление проблема в питона

import numpy as np 

array = [0.29, 0.59, 0.12] 
na_array = np.array(array) 
a = np.sum([0.29, 0.59, 0.12]) 
print a 
if (a == 1.0): 
    print "success" 

выход:

1.0 

Почему "успех" не печатается?

+2

Чтение [Арифметика с плавающей точкой: проблемы и ограничения] (https://docs.python.org/2/tutorial/floatingpoint.html) – Kasramvd

ответ

3

Его просто округление при печати, фактическое значение a является - 0.99999999999999989 (Это из-за внутренние точечные представления плавающих).

Пример -

In [13]: a = np.sum([0.29, 0.59, 0.12]) 

In [14]: a 
Out[14]: 0.99999999999999989 

In [15]: print a 
1.0 

Это происходит потому, что -

In [20]: 0.29 + 0.59 
Out[20]: 0.8799999999999999 

Если это реальная проблема, вы можете попробовать округлять число перед сравнением -

In [22]: if round(a,1) == 1.0: 
    ....:  print('success') 
    ....: 
success