首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计算百分比差异- python

计算百分比差异- python
EN

Stack Overflow用户
提问于 2019-02-22 05:07:08
回答 2查看 5.4K关注 0票数 1

我正在计算列表中两个值之间的百分比差异。

#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中这个计算很好,但这里不行,一定是和小数点有关吧??

注意-这不是关于百分比变化的问题,那是完全不同的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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]
票数 3
EN

Stack Overflow用户

发布于 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54816223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档