我正在計算列表中兩個值之間的百分比差異。#cal percentage dff: (val2/val)/100values = [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_valuesoutput:[0, 0, 300, 0]期望的輸出: [58, 14, 300, 67]不確定我在這里做錯了什么?在 Excel 中,這個計算工作正常,但在這里不行,一定與小數點有關??注意 - 這不是關于百分比變化的問題,這是完全不同的事情。
2 回答

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
執行時您會失去精度,(val_2)/val_1因此將其中之一轉換為浮點數以獲得最終結果為浮點數,然后將結果轉換為 int
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]

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
看起來您正在使用整數除法。請改寫這個
diff = (val_2/val_1)*100
對此
diff = (val_2/float(val_1))*100
甚至到這個
diff = (val_2/(val_1 * 1.0))*100
添加回答
舉報
0/150
提交
取消