Python 打印整数或带n个小数的浮点

Python 打印整数或带n个小数的浮点,python,python-3.x,floating-point,int,precision,Python,Python 3.x,Floating Point,Int,Precision,在Python中,当后一种情况要求我将打印输出限制为一定数量的数字时,如何打印可能是整数或实数类型的数字 长话短说,假设我们有以下示例: print("{0:.3f}".format(num)) # I cannot do print("{}".format(num)) # because I don't want all the decimals 是否有一种“Pythy”方法来确保,例如,在num==1的情况下,我打印1而不是1.00

在Python中,当后一种情况要求我将打印输出限制为一定数量的数字时,如何打印可能是整数或实数类型的数字

长话短说,假设我们有以下示例:

print("{0:.3f}".format(num)) # I cannot do print("{}".format(num))
                             # because I don't want all the decimals

是否有一种“Pythy”方法来确保,例如,在
num==1
的情况下,我打印
1
而不是
1.000
(我的意思是除了用
if
语句混乱我的代码之外)

如果使用固定数量的浮点,您可以使用替换来删除额外的
0
。例如,这将实现以下目的:

print("{:.3f}".format(1).replace(".000", ""))

对于Python 3*,您只需使用,因为除了舍入
浮点
s之外,当应用于整数时,它将始终返回
int

>>> num = 1.2345
>>> round(num,3)
1.234
>>> num = 1
>>> round(num,3)
1
此行为记录在
帮助(浮动)
中:

帮助(内部循环)


*使用Python 2,
round()
始终
返回
s a
浮点值
如果需要保持浮点值的固定宽度,可以使用,如下所示:

>>> num = 1
>>> print('%0.*f' % (isinstance(num, float) * 3, num))
1
>>> num = 1.2345
>>> print('%0.*f' % (isinstance(num, float) * 3, num))
1.234
>>> num = 1.2
>>> print('%0.*f' % (isinstance(num, float) * 3, num))
1.200

对于小数点的固定数目:

>>> num = 0.2
>>> print('%.04*f' % num)
0.2000

>>> num = 3.102
>>> print('%.02*f' % num)
3.10

部分问题在于
int
对待
.3
的方式与
float
对待
的方式相同,而不是说完全忽略它。我的猜测是否定的,你至少需要在过程中的某个地方做一个三元运算符,我敢肯定,如果不要求将
1.0
显示为
1.000
,那么将其视为
if
。我从来不知道
round
有这么多功能。我从来没有想过在
int
上使用它。不确定它是否重要,但这不会提供与问题中的格式规范相同的输出,具有较短的浮点值(即
1.2
vs
1.200
)。@ekhumaro是的,我同意不太清楚所需的行为是什么,我投了你的赞成票solution@MarkRansom谢谢,是的,事实上当ndigits是一个负整数时,整数上的
round()
非常有用,例如
round(210,-2)
return
s
200
>>> num = 1
>>> print('%0.*f' % (isinstance(num, float) * 3, num))
1
>>> num = 1.2345
>>> print('%0.*f' % (isinstance(num, float) * 3, num))
1.234
>>> num = 1.2
>>> print('%0.*f' % (isinstance(num, float) * 3, num))
1.200
>>> num = 0.2
>>> print('%.04*f' % num)
0.2000

>>> num = 3.102
>>> print('%.02*f' % num)
3.10