python除法结果不正确且结果不同

时间:2016-07-30 14:28:09

标签: python-3.x

我正在尝试解决分数背包问题。

我必须找到每重量最大卡路里的物品。我将我的包装满了最大卡路里的定义/有限重量。

虽然算法是真的,但由于python划分怪异,我找不到真正的结果

当我尝试找到每重量最大卡路里(python3)的物品时

print ((calories_list[i]/weight_list[i])*10)
# calories[i] 500 and weight[i] 30 (they're integers)
166.66666666666669

另一方面,我打开终端并键入python3

>>> 500/30
16.666666666666668
#when multiply with 10, it must be 16.666666666666668 not
#166.66666666666669

如你所见,它会给出不同的结果

最重要的是,重要的是真正的答案

500/30=16.6666666667

两天前我被困在这里,请帮帮我

谢谢你

1 个答案:

答案 0 :(得分:0)

正如Python FAQ

中所述
  

CPython中的float类型使用C double进行存储。 float对象的值以固定精度(通常为53位)存储在二进制浮点中,Python使用C操作,而C操作又依赖于处理器中的硬件实现来执行浮点运算。这意味着就浮点运算而言,Python的行为与许多流行语言一样,包括C和Java。

您可以使用decimal模块替代:

>>> from decimal import Decimal
>>> Decimal(500)/Decimal(30)
Decimal('16.66666666666666666666666667')