编写一个函数around(digit, decimals=0),返回一个对浮点数digit的四舍五入的结果,decimals为保留的小数位数。(不得使用格式化字符串处理)。要求至少测试三组:decimals超过digit已有的小数位数一组,如around(1.01, 4);decimals低于digit已有的小数位数两组,需要进位和需要舍位各一组,如around(1.99, 1)和around(1.91, 1)
时间: 2023-06-09 19:01:54 浏览: 251
给定一组浮点型数据,首先对所有数据保留n位小数(四合五入),然后删除0元素,最后找到删除0元素后的数组的众数。
好的,你的第一个问题是编写一个函数around(digit, decimals=0),返回一个对浮点数digit的四舍五入的结果,decimals为保留的小数位数,不得使用格式化字符串处理,对吧?我可以回答这个问题。以下是代码实现:
```python
def around(digit, decimals=0):
result = digit * 10 ** decimals
if result - int(result) >= 0.5: # 判断进位
result = int(result) + 1
else:
result = int(result)
return result / 10 ** decimals
```
我们可以使用如下测试样例来测试函数:
```python
print(around(1.01, 4)) # 1.01
print(around(1.99, 1)) # 2.0
print(around(1.91, 1)) # 1.9
```
第一组测试样例中,保留小数点后四位,位数高于原数中已有的小数位数,直接返回原数。第二组测试样例中,需要进位,结果为2.0。第三组测试样例中,需要舍位,结果为1.9。
阅读全文