带有e +的python中的十进制数字

时间:2013-09-29 11:22:39

标签: python rounding digits

我想用Python做一个打印输出,每次给出2位数。问题是,有非常大(或小)的数字,所以正常的Python输出给出如下:

5.89630388655e-09
8.93552349994e+14

但有时也是正常的数字,如:

345.8976

我只想强制它有两位数,这意味着大小数字的输出是

5.89e-09
8.93e+14

并且正常数字仅以第二位数字加上(或舍入):

345.89 (or 345.90)

如何在Python中实现这一点?

2 个答案:

答案 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'表示两位小数