在Python中舍入非常大的数字(小数点左边)

时间:2016-06-03 01:08:25

标签: python rounding

Python round()函数理论上会将负数舍入到小数点左边的位置。 [即。圆(150,-2)=> 200]

但是,它似乎非常容易受到浮点错误的影响。

例如,如果大量说2e25,则会产生奇怪的结果。

2e25 === 20000000000000000000000000

但是,round(2e25,-23)给出了类似的值 20000000000000000273942742

何时才应该获得20000000000000000000000000

我知道有一个格式化函数,这个线程: round() in Python doesn't seem to be rounding properly

但是,这似乎只适用于四舍五入右边的舍入。我错了吗?还有另一种方法吗?试图让数学运算正确非常令人沮丧。

谢谢!

1 个答案:

答案 0 :(得分:2)

问题在于2e25实际上并不等于20000000000000000000000000。

>>> 2e25 == 20000000000000000000000000
False
>>> 2e25 == 20000000000000001811939328
True

float类型没有足够的精度来准确表示这么大的整数。除非您有充分的理由使用浮点值,否则请使用整数。