,,python中round函数如何使用

,,python中round函数如何使用

在本文中,边肖整理了python的round函数用法总结,有需要的朋友可以学习一下。

Round函数很简单,近似浮点数的值,保留几个小数位。例如

圆形(10.0/3,2)

3.33

圆形(20/7)

第一个参数是浮点数,第二个参数是保留的小数位数,可选。如果不写,默认保留为整数。

这么简单的函数能有什么漏洞?

1、round的结果跟python版本有关

我们来看看python2和python3的区别:

$ python

Python 2.7.8(默认,2015年6月18日18:54:19)

linux2上的[GCC 4.9.1]

有关详细信息,请键入“帮助”、“版权”、“配额”或“许可证”。

圆形(0.5)

1.0

$ python3

Python 3.4.3(默认,2015年10月14日20:28:29)

linux上的[GCC 4.8.4]

有关详细信息,请键入“帮助”、“版权”、“配额”或“许可证”。

圆形(0.5)

如果我们阅读python的文档,它是这样说的:

在python2.7的doc中,round()的结尾是这样的,“值被舍入到最接近10的倍数的幂minius ndigits如果两个倍数相等,则从0开始舍入。保留值会保留到更靠近前一个的一端(四比六),如果离两端一样远,会保留到离0远的一边。所以round(0.5)将近似为1,而round(-0.5)将近似为-1。

但是在python3.5的doc中,文档变成了“值四舍五入到10的最接近的倍数的幂次方;如果两个倍数同样接近,则四舍五入到偶数。如果离两边一样远,就预留给偶数边。例如,round(0.5)和round(-0.5)将保持为0,而round(1.5)将保持为2。

所以任何一个项目从py2迁移到py3,都要注意round的位置(当然也要注意/和//、print等一些库)。

2、特殊数字round出来的结果可能未必是想要的。

圆形(2.675,2)

2.67

Python2和python3都在他们的文档中引用了相同的例子。原文是这样说的:

注意

浮点数的round()行为可能会令人惊讶:例如,round(2.675,2)给出的是2.67,而不是预期的值

2.68.这不是一个错误:这是因为大多数小数不能精确地表示为

漂浮。如需详细资讯,请参阅浮点运算:问题与限制。

简单来说,无论我们看python2还是3,round(2.675,2)的结果都应该是2.68,但实际是2.67。为什么?这和浮点数的精度有关。我们知道浮点数在机器中是无法准确表达的,因为它们转换成一串1和0之后可能是无限的数字,而机器已经把它们截断了。那么机器里存的数字2.675比实际数字小一点。这一点点导致它更接近2.67一点点,所以保留小数点后两位就是接近2.67。

以上。除非对精度没有要求,否则尽量避免使用round()函数。近似计算我们还有其他选择:

使用math模块中的一些函数,比如math.ceiling除法。

Python自带可除性,在python2中是/在Python 3中是//,div函数。

格式化字符串可以截断,比如“% . 2f”% value(保留两位小数,变成字符串……如果还想用浮点数,请披上float()的外衣)。

当然,如果对浮点数的精度要求很高,请使用。如果不对,请使用十进制模块。

内容扩展:

舍入(数字,num_digits)

需要四舍五入的数字。

Num_digits指定的位数,按此数字舍入。

给…作注解

如果num_digits大于0,则舍入到指定的小数位数。

如果num_digits等于0,则舍入到最接近的整数。

如果num_digits小于0,则四舍五入到小数点左侧。

例子

x=1.343671234

打印x

打印回合(x,1)

打印回合(x,2)

打印回合(x,3)

输出是:

1.343671234

1.3

1.34

1.344

关于如何在python中使用round函数的这篇文章就到这里了。有关python中round函数使用的更多总结,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: