在ESP32上使用micropython处理小数的四舍五入会遇到问题,比如:
n = 0.945
m = round(n,2) #四舍五入取小数点后2位
print(m)
结果输出0.94,不是想要的0.95。简单的解决办法如下:
n = 0.945
x = int(0.945*1000)
if x%10 == 5:
x = x+1
m = round(x/1000,2)
print(m)
这样就是0.95啦,同理可得一个通用的小数处理四舍五入的方法:
#num为要处理的小数,n为要保留的位数
def myround(num,n):
x = 10**(n+1)
temp = int(num * x)
if temp%10 == 5:
temp = temp + 1
return round(temp/x,n)
#测试结果
#print(myround(0.945,2))
#0.95