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

在Python中舍入非常大的数字(小数点的左边),python,rounding,Python,Rounding,Python round()函数在理论上会将负数四舍五入到小数点的左边。[即圆形(150,-2)=>200] 然而,它似乎很容易受到浮点错误的影响 例如,给定一个很大的数字,比如2e25,它会给出奇怪的结果 2e25===200000000000000000000 但是,round(2e25,-23)给出的值如下 200000000000000000273942742 当它应该得到200000000000000000000000000的时候 我知道有一个格式化函数,一个la线程: 然而,这似乎

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

然而,它似乎很容易受到浮点错误的影响

例如,给定一个很大的数字,比如2e25,它会给出奇怪的结果

2e25===200000000000000000000

但是,round(2e25,-23)给出的值如下 200000000000000000273942742

当它应该得到200000000000000000000000000的时候

我知道有一个格式化函数,一个la线程:

然而,这似乎只适用于小数点右边的四舍五入。我错了吗?还有别的办法吗?想把数学弄对是很令人沮丧的


谢谢

问题是2e25实际上并不等于200000000000000000000

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

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

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

>>> 2e25 == 20000000000000000000000000
False
>>> 2e25 == 20000000000000001811939328
True
float
类型没有足够的精度来精确表示如此大的整数。除非您有充分的理由使用浮点值,否则请改用整数