首页 > 解决方案 > 如何打印没有指数形式/科学记数法的十进制数?

问题描述

要打印没有指数形式的浮点数,我们可以这样写:

print('%f' % (10**-8))

但这通常由于精度误差而显示为零。相反,我们可以使用Decimal.decimal(float)精确地打印浮点数。但这会以指数格式打印数字,即10e-10. 而且我似乎无法将它们组合起来,因为我不知道如何Decimal'%f'以前格式化浮点数那样格式化。

所以我的问题是,如何按照我想要的方式完成这件事?

注意:此处使用的幂 -8 只是一个示例。功率可以是可变的。另外,我想知道我是否可以高精度打印两个数字的差异。

标签: pythonpython-3.xfloating-pointscientific-notationpython-decimal

解决方案


from decimal import Decimal
print('%.8f' % Decimal(10**-8))

输出:

0.00000001

要动态指定小数位,您可以使用以下命令:

from decimal import Decimal

power = 10
print('%.*f' % (power, Decimal(10**-power)))

印刷:

0.0000000001

推荐阅读