用python舍入数字

用python舍入数字,python,Python,我试图用python计算int((226553150*1023473145)/5。),得到了46374212988031352,虽然它应该是46374212988031350。删除整数除法的句点: int((226553150*1023473145)/5) 对我来说是46374212988031350 在@tobias_k的评论后编辑: 这只适用于Python2,其中/是浮点除法(如果其中一个参数是浮点)或整数除法(如果两个参数都是整数)。 在Python3中(或者在Python2中使用来自u

我试图用python计算int((226553150*1023473145)/5。),得到了46374212988031352,虽然它应该是46374212988031350。

删除整数除法的句点:

int((226553150*1023473145)/5)
对我来说是46374212988031350

在@tobias_k的评论后编辑: 这只适用于Python2,其中
/
是浮点除法(如果其中一个参数是浮点)或整数除法(如果两个参数都是整数)。 在Python3中(或者在Python2中使用来自uu future uuu导入除法)
/
始终是浮点除法,取整问题再次出现,因为您所乘的数字太大,无法准确地用浮点表示


解决方案是使用
/
,在所有Python版本中都是整数除法,或者(如果您确实需要分母为float)切换到,您可以增加浮点精度,直到不再有舍入误差。

为什么要使用浮点除法来转换为int?您可以直接计算
(226553150*1023473145)//5
并得到正确的整数结果。将分母从
5.
更改为
5
。在我看来,这是一个关于整数算术的问题,而不是浮点数学的问题,因此副本可能有问题。@StefanS:完全同意。事实上正确的答案是:“不要执行浮点除法,坚持整数。”,而不是“在处理浮点时不要期望得到准确的答案”(就像在dup中一样)@StefanS:我也同意。这个问题当然是其他问题的重复(对Python除法运算符的混淆),但不是该问题的重复(关于浮点运算,特别是小数加法!)。只适用于Python 2。在Python3中,
/
将默认为浮点除法。最好使用
/
。另外,如果您不使用
/
,则不需要
int(…)
@tobias_k in
int(x/y)
尽管我同意楼层划分是正确的方法,但
int
也很重要。