Lor*_*ins 9 python floating-point precision int python-3.x
在Python中,如果后一种情况要求我将打印输出限制为一定数量的数字,如何打印可能是整数或实数的数字?
长话短说,我们有以下例子:
print("{0:.3f}".format(num)) # I cannot do print("{}".format(num))
# because I don't want all the decimals
Run Code Online (Sandbox Code Playgroud)
是否存在"Pythy"方式以确保例如,如果num == 1我打印1而不是1.000(我的意思是除了使用if语句混乱我的代码)
Chr*_*nds 10
使用Python 3*,您可以使用,round()因为除了舍入floats,当应用于整数时,它将始终返回int:
>>> num = 1.2345
>>> round(num,3)
1.234
>>> num = 1
>>> round(num,3)
1
Run Code Online (Sandbox Code Playgroud)
此行为记录在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).
Run Code Online (Sandbox Code Playgroud)
而且help(int.__round__):
Help on method_descriptor:
__round__(...)
Rounding an Integral returns itself.
Rounding with an ndigits argument also returns an integer.
Run Code Online (Sandbox Code Playgroud)
*使用Python 2,round()总是returnsa float.
如果您需要为浮点值保持固定宽度,您可以使用printf 样式的格式,如下所示:
>>> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1912 次 |
| 最近记录: |