由于python3里使用了更精确的舍入方式,导致使用round和%.numf 四舍五入 有各种意料之外的情况出现,以下分别是用数学方式,用字符串+If,引入第三方模块,
以下是精度在小数点后两位
数学方式(比较适用的方法,要求少)
def round_num(a):
s=100
return '%.2f' % (int(float(a)*s+0.5)/s)
print(round_num(a)
字符串(对输入字符串取的长度有要求)
def round_num(a): if int(a[5]) > 4: c = int(a[4]) c += 1 a = a[:4] + str(c) return a else: a = '%.2f' % float(a) return a
第三方模块(占用内存大)
from decimal import Decimal, ROUND_HALF_UP def Deci_num(a): return str((Decimal(a).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)))
这里有对四舍五入第三方模块详细介绍和原理 https://zhuanlan.zhihu.com/p/60952919,超厉害