1

我想在 Python 中进行打印输出,每次输出 2 位数字。问题是,有非常大(或小)的数字,所以正常的 Python 输出如下所示:

5.89630388655e-09
8.93552349994e+14

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

345.8976

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

5.89e-09
8.93e+14

而普通数字只是在第二个数字处加盖(或四舍五入):

345.89 (or 345.90)

这怎么可能在 Python 中实现?

4

2 回答 2

3

在 python 中,您可以以类似于其他语言的方式格式化数字:

print '%.2f' % number
print '%.3g' % number

有关可用标志和转换的更多详细信息,请参阅字符串格式

或者,您可以使用str.format()Formatter

'{0:.2f}'.format(number)
'{0:.3g}'.format(number)

有关格式表达式语法的详细信息,请参阅格式字符串语法。

转换产生的f符号总是包含小数点,并且可能导致大数字的字符串表示非常长,而非常小的数字则为 0.00。

根据g数字的大小,转换产生有或没有指数的符号。但是,精度参数的解释与g转换f不同。因为f它是小数点后的位数,而g它是显示的所有有效位数。有关详细信息,请参阅字符串格式

对精度参数的不同解释的原因是,在处理数量级非常不同的数字时,坚持固定数量的有效数字会更有意义。

如果您决定不遵循此处的约定,您将需要编写对不同大小的数字使用不同格式表达式的代码。但是请注意,这将导致您的代码根据其大小产生不同精度的数字,例如 345.89 有五个有效数字,而 3.46e+10 和 3.46e-10 只有三个。

于 2013-09-29T11:25:55.093 回答
1

您可以使用格式命令:

"({0:.2f})".format(yournumber)

'.2f' 表示两位小数

于 2013-09-29T11:28:17.087 回答