Python论坛  - 讨论区

标题:Python Cookbook 之 浮点数精度控制

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哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号