在本文中,边肖整理了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。