我用谷歌搜索过,但找不到正确的答案。
假设我们有浮点数并得到它们的平均值。他们的平均值是这样的:
3.5
2.5
5
7
所以我们有 4 个数字(不再在列表中的人)。两个带小数的数字和两个整数。
我想做的是,打印这些数字并保持这样。但我的问题是,当我使用%.1f
,它从 5 和 7 得到 5.0 和 7.0,而我想保持它们原样(所以将它们保留为整数).
所以我想按原样打印它们,但我不知道如何。浮动添加decimal
指向整数。将它们转换为int
,删除所需的小数。
这两种选择都不是我想要的。
有人能指出我正确的方向吗?
编辑:相关代码,按要求:
# I have a list of numbers and I am calculating their average and rounding them first.
get_numbers = map(float, line[-1])
average_numbers = sum(get_numbers) / len(get_numbers)
rounded_numbers= round(average_numbers * 2) / 2
# So now, I've got the numbers: 3.5, 2.5, 5, 7
print "The numbers are: %.1f" % (rounded_numbers)
您可以使用浮动'是整数 https://docs.python.org/3.4/library/stdtypes.html#float.is_integer方法。它返回True
如果浮点数可以表示为整数(换句话说,如果它的形式为X.0
):
li = [3.5, 2.5, 5.0, 7.0]
print([int(num) if float(num).is_integer() else num for num in li])
>> [3.5, 2.5, 5, 7]
EDIT
OP添加代码后:
您应该对计算的平均值使用相同的逻辑,而不是像上面的原始示例那样使用列表理解:
get_numbers = map(float, line[-1]) # assuming line[-1] is a list of numbers
average_numbers = sum(get_numbers) / len(get_numbers)
average = round(average_numbers * 2) / 2
average = int(average) if float(average).is_integer() else average
print average # this for example will print 3 if the average is 3.0 or
# the actual float representation.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)