不使用round函数,用python写一个可以将数字修约的函数。 修约要求如下 1.如果修约值最左边的值大于5就进一 2.如果修约值最左边的值小于5则舍去 3.如果修约值最左边的值等于5且其后有非0数字时,就进一 4.如果修约值最左边的值等于5且其后无数字或皆为0时,若所保留的末位数为奇数则进一,若所保留的末位数为偶数则舍去。
时间: 2023-04-08 21:05:12 浏览: 118
好的,我可以回答这个问题。以下是一个可以将数字修约的函数:
```python
def round_num(num, decimal_places):
num_str = str(num)
decimal_index = num_str.find('.')
if decimal_index == -1:
return num
else:
integer_part = num_str[:decimal_index]
decimal_part = num_str[decimal_index+1:]
if len(decimal_part) <= decimal_places:
return num
else:
round_digit = int(decimal_part[decimal_places])
if round_digit > 5:
integer_part = str(int(integer_part) + 1)
elif round_digit < 5:
pass
else:
non_zero_digits = decimal_part[decimal_places+1:]
if any([digit != '0' for digit in non_zero_digits]):
integer_part = str(int(integer_part) + 1)
else:
last_digit = int(decimal_part[decimal_places-1])
if last_digit % 2 == 0:
pass
else:
integer_part = str(int(integer_part) + 1)
return float(integer_part + '.' + decimal_part[:decimal_places])
```
这个函数接受两个参数:一个数字和一个保留小数位数。它会根据修约规则对数字进行修约,并返回修约后的结果。
阅读全文