我正在尝试执行下一个代码int((226553150 * 1023473145) / 5),python3给了我一个答案46374212988031352.但是ruby和swift给了我一个答案46374212988031350.
我错过了什么?
a / b是Python 3中的浮点除法.为了执行整数除法,您应该使用//运算符:
In [3]: (226553150 * 1023473145) // 5
Out[3]: 46374212988031350
Run Code Online (Sandbox Code Playgroud)
浮点除法精度仅限于尾数大小:
In [19]: (226553150 * 1023473145) / 5
Out[19]: 4.637421298803135e+16
Run Code Online (Sandbox Code Playgroud)
如您所见,Python正确表示所有数字,但最后一个.你也可以用它做一些有趣的技巧:
In [20]: int((226553150 * 1023473145) / 5)
Out[20]: 46374212988031352
In [21]: int((226553150 * 1023473145) / 5 - 1)
Out[21]: 46374212988031352
In [22]: int((226553150 * 1023473145) / 5 + 1)
Out[22]: 46374212988031352
In [23]: int((226553150 * 1023473145) / 5 - 2)
Out[23]: 46374212988031352
In [24]: int((226553150 * 1023473145) / 5 - 3)
Out[24]: 46374212988031352
In [25]: int((226553150 * 1023473145) / 5 - 4)
Out[25]: 46374212988031344
In [26]: int((226553150 * 1023473145) / 5 + 4)
Out[26]: 46374212988031360
In [27]: int((226553150 * 1023473145) / 5 + 3)
Out[27]: 46374212988031352
Run Code Online (Sandbox Code Playgroud)