为什么双除法似乎返回';错误';用python回答

为什么双除法似乎返回';错误';用python回答,python,logic,operators,Python,Logic,Operators,在Python中的基本运算符/和//上。为什么99/9.9返回10.0而99//9.9返回9.0 /-返回结果为浮动 //-返回不带提示的商,单位为int 那么,为什么: >>> 99/9.9 10.0 >>> 99//9.9 9.0 >>> 9.9*9.0 89.10000000000001 什么时候 //表示整数除法,返回商的下限。5//2=2,而5/2=2.5。将//与float一起使用是没有意义的。正如其他人在这里解释的那样,浮点数

在Python中的基本运算符/和//上。为什么99/9.9返回10.0而99//9.9返回9.0

/-返回结果为浮动 //-返回不带提示的商,单位为int

那么,为什么:

>>> 99/9.9
10.0
>>> 99//9.9
9.0
>>> 9.9*9.0
89.10000000000001
什么时候


//表示整数除法,返回商的下限。5//2=2,而5/2=2.5。将//与float一起使用是没有意义的。正如其他人在这里解释的那样,浮点数是不精确表示的,尝试对浮点数进行整数除法会产生意外的结果。

9.9不能精确表示为浮点数(尽管它比10^-13更接近,所以仅键入9.9不会显示9.900000001或类似的结果)。因此,从文本9.9创建的浮点实际上略大于9.9,99//9.9是9。同样,99%9.9是9.89999999997,如果9.9可以准确表示,那么我们预期的不是0

这个故事的寓意是:“//”主要用于整数,在浮点数上使用时会让人头疼。

这很常见

“请注意,由于浮点运算的限制,舍入错误可能会导致意外结果”(来自)。在这个参考资料中,你可以看到所有的细节

>>> 9.9*10.0
99.0