打印整数或带 n 位小数的浮点数
Print either an integer or a float with n decimals
在 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*,您可以只使用 round()
,因为除了四舍五入 float
s 之外,当应用于整数时,它总是 return int
:
>>> num = 1.2345
>>> round(num,3)
1.234
>>> num = 1
>>> round(num,3)
1
此行为记录在 help(float.__round__)
:
Help on method_descriptor:
__round__(...)
Return the Integral closest to x, rounding half toward even.
When an argument is passed, work like built-in round(x, ndigits).
和help(int.__round__)
:
Help on method_descriptor:
__round__(...)
Rounding an Integral returns itself.
Rounding with an ndigits argument also returns an integer.
* 对于 Python 2,round()
总是 return
s a float
.
如果您需要为浮点值保持固定宽度,您可以使用 printf-style formatting,像这样:
>>> 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
在 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*,您可以只使用 round()
,因为除了四舍五入 float
s 之外,当应用于整数时,它总是 return int
:
>>> num = 1.2345
>>> round(num,3)
1.234
>>> num = 1
>>> round(num,3)
1
此行为记录在 help(float.__round__)
:
Help on method_descriptor:
__round__(...)
Return the Integral closest to x, rounding half toward even.
When an argument is passed, work like built-in round(x, ndigits).
和help(int.__round__)
:
Help on method_descriptor:
__round__(...)
Rounding an Integral returns itself.
Rounding with an ndigits argument also returns an integer.
* 对于 Python 2,round()
总是 return
s a float
.
如果您需要为浮点值保持固定宽度,您可以使用 printf-style formatting,像这样:
>>> 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