2014年03月28日 星期五 09:45
相对于整数来说,浮点数真是复杂。当我第一次得知计算机在执行浮点数的运算会发生精度误差的问题时,真的很震惊。
对于财产金额,我们可能希望保留小数点后两位数字,也就是精确到分就可以了,对于圆周率,中学时只需要保留两位,但科学家却在不停的挑战这个无理数到底有多长。
在Python中,我们可以使用round进行精度控制,round是Python的内置函数,可以指定精度。值得注意的是,round在控制精度时,并不是“四舍五入”,据我研究,大概是“五舍六入”,在官方文档中有如下解释:
Note
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.
示例代码如下:
x=1.0/3 print(x) print(round(x,3)) print(type(round(x,3))) print(format(x,'0.3f')) print(type(format(x,'0.3f'))) x=1000/3 print(x) print(round(x,-1)) print(type(round(x,-1))) print(round(3.14,1)); print(round(3.15,1)); print(round(3.16,1));
参考资料:
http://docs.python.org/3/library/functions.html#round
Zeuux © 2024
京ICP备05028076号