def getDecimal(data_value, demical_num=2, divided_num=100000000, isdivided=True, none_zero='0.00'):'''除以10000000,并处理小数点
data_value:需要进行判断是否是-0.00的数据
:param data_value: 需要处理的小数
:param demical_num: 保留的小数位
:param divided_num: 被除数
:param isdivided: 是否除以 divided_num
:param none_zero: 非数字返回的值
:return:'''
defisNumber(num):'''判断是否为数字
:param num:
:return:'''pattern= re.compile(r'^[-+]?[-0-9]\d*\.\d*|[-+]?\.?[0-9]\d*$')
result=pattern.match(str(num))ifresult:returnTrueelse:returnFalsedefdealNum(data_value, demical_num, isdivided, divided_num):'''除以数据,处理科学计算法记录的数据 如:1.2e-5
:param demical_num: 需要处理的小数
:param demical_num: 保留的小数位
:param isdivided: 是否除以 divided_num
:param divided_num: 被除数
:return:'''
importmath
n= 10
for i in range(demical_num + 1):
n= n * 10
if float(data_value) <0:ifisdivided:
data_temp= math.ceil(float(data_value) / divided_num *n)else:
data_temp= math.ceil(float(data_value) *n)else:ifisdivided:
data_temp= math.floor(float(data_value) / divided_num *n)else:
data_temp= math.floor(float(data_value) *n)
data_value= data_temp /ndefnewRound(_float, _len):'''四舍五入保留小数位,如果想实现 0.2 显示为 0.20,可使用 '%.2f' % num 实现
:param _float:
:param _len: 保留的小数位'''
if len(str(_float).split('.')[1]) <=_len:returnround(_float, _len)elif str(_float)[-1] == '5':return round(float(str(_float)[:-1] + '6'), _len)else:returnround(_float, _len)if notisNumber(str(data_value)):returnstr(none_zero)
decimal_digit= '%.' + str(demical_num) + 'f'data_value=dealNum(data_value, demical_num, isdivided, divided_num)#调用new_round()进行四舍五入
decimal_data = decimal_digit %newRound(float(data_value), demical_num)
data= str(none_zero) if decimal_data == '-0.00' or decimal_data == '0.00' elsedecimal_datareturn data