我正在计算列表中两个值之间的百分比差异。
#cal percentage dff: (val2/val)/100
values = [0.11889, 0.07485, 0.01070, 0.03076, 0.01606]
values = [int(round(i*100)) for i in values]
conversion_values = []
for x in range(1, len(values), 1):
val_1 = values[x-1]
if val_1 == 0.0: #Check if val_1 is 0.
conversion_values.append('-')
else:
val_2 = values[x]
diff = (val_2/val_1)*100
conversion_values.append(diff)
conversion_values
output:
[0, 0, 300, 0]
所需输出:
[58, 14, 300, 67]
不确定我做错了什么?在Excel中这个计算很好,但这里不行,一定是和小数点有关吧??
注意-这不是关于百分比变化的问题,那是完全不同的事情。
发布于 2019-02-22 05:10:21
执行(val_2)/val_1
时精度会降低,因此请将其中任何一个转换为浮点型,以获得浮点型的最终结果,然后将结果转换为整型
values = [0.11889, 0.07485, 0.01070, 0.03076, 0.01606]
values = [int(round(i*100)) for i in values]
conversion_values = []
for x in range(1, len(values), 1):
val_1 = values[x-1]
if val_1 == 0.0: #Check if val_1 is 0.
conversion_values.append('-')
else:
val_2 = values[x]
diff = int(round((float(val_2)/val_1)*100)) # change to float -->round--> int
conversion_values.append(diff)
conversion_values
输出:
[58, 14, 300, 67]
发布于 2019-02-22 05:10:46
看起来你用的是整数除法。请重写这个
diff = (val_2/val_1)*100
到这个
diff = (val_2/float(val_1))*100
或者甚至到这个
diff = (val_2/(val_1 * 1.0))*100
https://stackoverflow.com/questions/54816223
复制相似问题