admin 管理员组文章数量: 887021
2023年12月25日发(作者:structure of the text)
函数round的用法
函数round是内置函数中的一种,其作用是将一个数值四舍五入到指定的小数位数。不同编程语言中,round函数可能会存在一些差异,但一般来说,它的输入参数是一个数值,输出结果也是数值类型。
下面针对Python中函数round的用法进行详细阐述:
1. 基本用法
在Python中,函数round的基本用法如下:
```python
round(number, ndigits=None)
```
其中,number参数表示要进行四舍五入的数值,ndigits表示要保留的小数位数。当ndigits为None时,表示不进行小数位数的调整,直接对数值进行四舍五入操作。例如:
```python
>>> round(2.75)
3
>>> round(2.25)
2
```
在上述的例子中,2.75和2.25经过round函数的处理,分别被四舍五入为了3和2。
如果指定了ndigits参数的值,则可以将数值保留到指定的小数位数。例如:
```python
>>> round(2.753, 2)
2.75
>>> round(2.256, 2)
2.26
```
在这里,第一个例子中,对于2.753这个数值,我们指定了ndigits为2,将其保留到了小数点后两位,所以经过round函数的处理后结果为2.75。同理,第二个例子中,2.256经过round处理后结果为2.26。
需要注意的是,当小数点后第ndigits+1位大于等于5时,会对第ndigits位进行进位处理。例如:
```python
>>> round(2.755, 2)
2.76
>>> round(2.256, 1)
2.3
```
在这里,2.755保留两位小数时,小数点后第三个数是5,所以第二位会进位,经过round处理后结果为2.76。同理,2.256的第二位数字5也会进位,将其保留到一位小数后就变成了2.3。
2. 负数的处理
对于负数的处理,round同样也可以为我们完成四舍五入的操作。例如:
```python
>>> round(-2.755, 2)
-2.76
>>> round(-2.256, 1)
-2.3
```
在这里,对于负数来说,进位的判定和正数是相同的,只是结果会变成负数。
需要注意的是,当数值的小数位数超过指定位数时,保留的位数会被截断。例如:
```python
>>> round(1234.567, 2)
1234.57
>>> round(1234.567, 1)
1234.6
```
在这里,1234.567保留两位小数时,结果是1234.57,但是保留一位小数时,结果是1234.6,这是因为小数位数不足而导致的结果截断。
3. Python3舍入规则变化
需要注意的是,在Python3中,round函数的舍入规则发生了一些变化。在Python2中的round函数默认采用的舍入规则是“银行家舍入法”,而在Python3中则采用的是“四舍六入五成双”的舍入规则。
所谓“四舍六入五成双”,指的是小数点后第ndigits+1位数字为5时,应根据ndigits后面的数字判断是否进位。如果ndigits后面的数字是偶数,就应该将ndigits位舍去;如果ndigits后面的数字是奇数,就应该将ndigits位进位。
例如:
```python
>>> round(1.25, 1)
1.2
>>> round(1.35, 1)
1.4
>>> round(1.25, 0)
1
>>> round(2.5, 0)
2
```
在这里,1.25保留一位小数时,ndigits后面的数字是5,所以根据“四舍六入五成双”的规则,应该判断ndigits位后面的数字是偶数,所以舍去ndigits位,结果为1.2;同理,1.35的结果是1.4,2.5的结果是2。
需要注意的是,如果要按照“银行家舍入法”的规则进行四舍五入,需要使用Python中的Decimal类来实现。例如,以下代码就是使用Decimal类来进行四舍五入的例子:
```python
from decimal import Decimal, ROUND_HALF_UP
value = Decimal('2.5')
result = ze(Decimal('1'), rounding=ROUND_HALF_UP)
print(result)
```
在这里,我首先使用Decimal类将2.5转换为Decimal类型的数据,然后通过quantize方法指定保留1位小数,并指定采用“银行家舍入法”进行四舍五入的操作,最后得到了结果2.
版权声明:本文标题:函数round的用法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703442891h451598.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论