Round 的四舍五入问题

问题描述:

round(float [,n])函数用于返回浮点数四舍五入后的值,小数点后保留n位(默认为0)
例如:
round(3.5248,2) > 3.52

但是当保留 n 位时,第 n+1 位为数字 5,此时它并不会进一位,而是舍弃掉。

例如:
round(3.585,2) > 3.58

假如 第 n+1 位的数字 > 5,又能正常显示:
round(3.586,2) >3.59

原因解释:

这并不是BUG,在 Python 手册中这样说到:
The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This is not a bug: it’s a result of the fact that most decimal fractions can’t be represented exactly as a float. See Floating Point Arithmetic: Issues and Limitations for more information.

简单来说,有些浮点数在计算机中并不能像整数那样被准确表达,它可能是近似值。

解决办法:

使用 decimal 模块

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,160评论 0 10
  • 每当夜幕降临,繁华的大都市,大街小巷灯红酒绿、行人穿梭,若汇成一副巨图,毫不逊色于古时的清明上河图,但是,夜色下的...
    磐石H阅读 4,183评论 3 2
  • 雨雾纷飞天凄凉 惆怅满腔心不阳 千里拉练归故乡 闻战而动奔战场
    似冰的梦阅读 2,944评论 2 2
  • 看了刘老师分享的同频共振的视频,心里为之一振,世界就是这么奇妙,很多事情自然而然的发生,我们从来没想过所以然,之所...
    高关阅读 10,570评论 0 2
  • 你在熟睡 嘴唇微张 气息袅袅 长长的睫毛向上卷翘 点点鼻子也挺直了腰 圆肉的下巴像颗蛋黄 好想一口吃掉 轻抚你吹弹...
    Ann苳杭杭阅读 4,758评论 2 14