一、round()函数
round(number[, ndigits])
round 对传入的数据进行四舍五入,如果ngigits不传,默认是0, 但是对一些数的进行四舍五入的时候,在遇到5的时间,会不进一位:
print(round(2.55,1))
>>2.5
这是2.55在存的时候,并不是2.55,而是2.5499……
print('%.20f'%2.55)
>>2.54999999999999982236
二、四舍五入
因此要解决四舍五入这个问题,不能用round(),就写了新的函数:
def round_fix(num, digit):
if isinstance(num, int):
num = float(num)
if not isinstance(num, float):
print("TypeError: a float or int is required")
return
left, right = str(num).split('.')
if digit >= len(right):
return num
else:
# 四舍五入
right_int = int(right[0:digit])
if int(right[digit]) >= 5:
right_int += 1
ans = "{}.{}".format(left, right_int)
return float(ans)
print(round(2.55,1))
>>2.5
print(round_fix(2.55,1))
>>2.6
print(round_fix(2.5423,1))
>>2.5