python 3圆函数逼近

我遇到了python圆函数的问题.当我通过执行round(0.715,2)来舍入2位数时,答案是0.71,类似于我执行round(0.615,2)时结果是0.61.但是当我执行round(0.515,2)时它给出0.52,类似于round(0.915,2),结果是0.92.

有人可以解释一下吗?

最佳答案
这是由于您使用的数字的近似值为floating point.只有~16个有效十进制数字.正如你所看到的那样,前两个略微低于,而后两个略微超过

>>> "%.20f"%0.715
'0.71499999999999996891'
>>> "%.20f"%0.615
'0.61499999999999999112'
>>> "%.20f"%0.515
'0.51500000000000001332'
>>> "%.20f"%0.915
'0.91500000000000003553'

如果您需要更好的表现,请考虑使用十进制模块

转载注明原文:python 3圆函数逼近 - 代码日志