2016-02-26 2 views
0

В PYTHON (3.4.3): Каким образом в коде ниже х 3,5 ... и у 100. Не должно быть х 0.Почему modulo не работает с десятичными знаками в python?

weight = 356 
weight2 = 3.56 
x = weight%weight2 
y = weight/weight2 
print(x) 
print(y) 

Но в этом коде х = 0 делает как ожидалось:

weight = 35600 
weight2 = 356 
x = weight%weight2 
y = weight/weight2 
print(x) 
print(y) 

Если у вас есть какие-либо объяснения, ответьте и дайте обходное решение, если у вас есть! :)

+0

Возможно, вы захотите взглянуть на это: http://stackoverflow.com/a/14763891/1377151 –

ответ

0

Это потому, что арифметика с плавающей точкой не является точной. что decimal модуль показывает «реальную» ценность того, что вы думаете, что 3.56:

In[202] decimal.Decimal(3.56) 
Out[202]: Decimal('3.560000000000000053290705182007513940334320068359375') 

Так много проблем возникает округление.

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