如果小数点不是整数,如何显示小数点?

时间:2016-11-23 14:39:53

标签: python

我用Google搜索,但无法找到合适的答案。

让我们说我们有浮动,我们得到他们的平均值。他们的平均值是这样的:

3.5
2.5
5
7

所以我们有4个号码(他们不在列表中)。两个带小数和两个整数的数字。

我想要做的是,打印这些数字并保持这样。但问题是,当我使用%.1f时,它从5和7开始生成5.0和7.0,而我想保留它们,因为它们是(所以将它们保留为整数)

所以我想完全按原样打印它们,但我不知道怎么做。 Float将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)

3 个答案:

答案 0 :(得分:10)

你可以使用花车' is_integer方法。如果float可以表示为整数(换句话说,如果它的格式为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]

修改

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. 

答案 1 :(得分:0)

从技术上讲,如果你有浮动并获得他们的平均值,你应该得到浮动。但是如果你只想打印它们,以下应该可以正常工作:

print('{} {} {} {}'.format(3.5, 2.5, 5, 7))

答案 2 :(得分:0)

与之前的答案类似:

[int(i) if int(i) == i else i for i in li]

或者:

[int(i) if not i % 1 else i for i in li]