首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除法在循环中给0,为什么?

除法在循环中给0,为什么?
EN

Stack Overflow用户
提问于 2016-10-03 11:31:29
回答 4查看 119关注 0票数 0

下面的代码为我提供了每20次迭代的0%,而不是我希望它显示的实际百分比。

代码语言:javascript
运行
复制
n=100
for i in range(n):
    if i% 20 ==0:
        print str(i/n*100) + '%, Progress'

结果:

代码语言:javascript
运行
复制
0%, Progress
0%, Progress
etc.....

我一定是错过了一些很简单的东西。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-03 11:37:31

将除法改为i/(float)n*100,以便python解释器将结果的输出格式化为小数点。

票数 1
EN

Stack Overflow用户

发布于 2016-10-03 11:38:48

除法自动舍入到最近的整数。代码中发生的情况是:i= 20 n= 100。

i/n = 20/100,等于0。然后(i/n)*100 = 0*100 = 0。你可以先把i乘以100,然后除以n: i*100/n来解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2016-10-03 11:47:08

n=100 for i in range(n): print(i); if i% 20 ==0: print str((float(i)/float(n))*100) + '%, Progress'

对于python,i/n根据变量声明是(int)/(int)。所以ti试图给i/n一个整数的答案,它总是0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39830581

复制
相关文章

相似问题

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