为了账号安全,请及时绑定邮箱和手机立即绑定

计算百分比差异 - python

计算百分比差异 - python

一只斗牛犬 2021-11-16 09:42:25
我正在计算列表中两个值之间的百分比差异。#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]


查看完整回答
反对 回复 2021-11-16
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

看起来您正在使用整数除法。请改写这个

diff = (val_2/val_1)*100

对此

diff = (val_2/float(val_1))*100

甚至到这个

diff = (val_2/(val_1 * 1.0))*100


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 356 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信