我想用Python做一个打印输出,每次给出2位数。问题是,有非常大(或小)的数字,所以正常的Python输出给出如下:
5.89630388655e-09
8.93552349994e+14
但有时也是正常的数字,如:
345.8976
我只想强制它有两位数,这意味着大小数字的输出是
5.89e-09
8.93e+14
并且正常数字仅以第二位数字加上(或舍入):
345.89 (or 345.90)
如何在Python中实现这一点?
答案 0 :(得分:2)
在python中,您可以采用与其他语言类似的方式格式化数字:
print '%.2f' % number
print '%.3g' % number
有关可用标记和转化的详细信息,请参阅string formatting。
或者,您可以使用str.format()
或Formatter
:
'{0:.2f}'.format(number)
'{0:.3g}'.format(number)
有关格式表达式语法的详细信息,请参阅format string syntax。
f
转换产生的表示法总是包含小数点,并且可能导致大数字的字符串表示非常长,而非常小的数字则表示0.00。
g
转换生成带或不带指数的表示法,具体取决于数字的大小。但是,g
的精度参数的解释与f
转换的解释不同。对于f
,它是小数点后的位数,而对于g
,它是显示的所有有效位数。有关详细信息,请参阅string formatting。
对精度参数的不同解释的原因是,当处理非常不同的数量的数字时,坚持固定数量的重要数字会更有意义。
如果您决定不遵循惯例,则需要编写使用不同格式表达式的代码来表示不同大小的数字。但请注意,这会导致您的代码根据其大小产生具有不同精度的数字,例如345.89有五位有效数字,而3.46e + 10和3.46e-10只有三位。
答案 1 :(得分:1)
您可以使用format命令:
"({0:.2f})".format(yournumber)
'。2f'表示两位小数