首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >3个数字的平均值是错误的

3个数字的平均值是错误的
EN

Stack Overflow用户
提问于 2020-01-16 10:54:03
回答 3查看 65关注 0票数 0

我想找出用户输入的3个数字的平均值。

代码语言:javascript
运行
复制
    val1, val2, val3 = int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3])

    print val1, val2, val3

    avr = ((val1 + val2 + val3) / 3)
    print avr
    print "%02.f" % avr

给定3个数字60、39和92,并在终端中键入python.exe calculator.py 60 39 92,我得到:

输出:

代码语言:javascript
运行
复制
60 39 92
63
63.00

输出应该显示平均值为63.67,而不是63.00。我哪里错了?

EN

回答 3

Stack Overflow用户

发布于 2020-01-16 10:59:49

在python 2中,尝试用int除法总是会产生一个int,即使结果通常是一个浮点数。这个问题的解决方案是将int转换为浮点数(完全不同的数据类型),或者使用3.0而不是3 (因为前者被读取为浮点数,而后者是整数):

代码语言:javascript
运行
复制
val1, val2, val3 = float(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3])

代码语言:javascript
运行
复制
avg = (val1 + val2 + val3) / 3.0

当所有涉及的数字都是浮点数而不是整数时,结果将是一个浮点数。

如果您要使用Python3(您应该使用Python3;python2已不再受官方支持),这将是不成问题的:整数除法有自己的运算符//,如果答案不是整数,这种类型的运算将始终生成浮点数。

票数 3
EN

Stack Overflow用户

发布于 2020-01-16 10:58:57

你将变量作为整数输入,那么平均结果也将是整数。然后你把它打印成浮点数,这就是你错的地方。如果您仍然想要浮点型结果,请尝试:

val1, val2, val3 = float(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3])

票数 2
EN

Stack Overflow用户

发布于 2020-01-16 11:00:41

在Python 2中,如果将一个整数除以另一个整数,则会得到一个整数。您可以除以浮点数来修复此问题:

代码语言:javascript
运行
复制
avr = (val1 + val2 + val3) / 3.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59762408

复制
相关文章

相似问题

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