首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python 3轮函数近似

python 3轮函数近似
EN

Stack Overflow用户
提问于 2013-03-08 11:26:25
回答 2查看 1.6K关注 0票数 3

我遇到了一个关于python的round函数的问题。当我通过执行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。

有人能解释一下吗?

EN

回答 2

Stack Overflow用户

发布于 2013-03-08 11:29:35

这是由于您正在使用的数字的floating point近似值。只有大约16个有效小数位。如你所见,前两个略低于,后两个略高于

代码语言:javascript
复制
>>> "%.20f"%0.715
'0.71499999999999996891'
>>> "%.20f"%0.615
'0.61499999999999999112'
>>> "%.20f"%0.515
'0.51500000000000001332'
>>> "%.20f"%0.915
'0.91500000000000003553'

如果您需要更好的性能,请考虑使用decimal模块

票数 9
EN

Stack Overflow用户

发布于 2013-03-08 11:30:14

在典型计算机中实现的浮点数是不精确的。因此,当你写5.15时,它实际上可能与5.1499999999相同(对计算机)。或者其他一些细微的变化。当像Python这样的编程语言打印这些数字时,它们决定四舍五入到小数点后几位,因此您认为您得到了一个确切的数字,但事实并非如此。

另请参阅:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html (“每个计算机科学家都应该知道的浮点算术”)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15286194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档