Python 3.x 打印无指数形式/科学符号的十进制数
要打印没有指数形式的浮点数,我们可以这样写:Python 3.x 打印无指数形式/科学符号的十进制数,python-3.x,floating-point,precision,Python 3.x,Floating Point,Precision,要打印没有指数形式的浮点数,我们可以这样写: print('%f' % (10**-8)) 但由于精度误差,这通常显示零。此外,我们还可以使用Decimal.Decimal(float)精确打印浮点数。但它以指数格式打印数字,即10e-10。我似乎无法将它们组合在一起,因为我不知道如何像我使用'%f'格式化“float”那样格式化十进制。所以我的问题是,如何以我想要的方式完成这件事 编辑:这里使用的power-8就是一个例子。功率可能是可变的。我还想知道我是否可以高精度地打印两个数字的差异 f
print('%f' % (10**-8))
但由于精度误差,这通常显示零。此外,我们还可以使用Decimal.Decimal(float)
精确打印浮点数。但它以指数格式打印数字,即10e-10
。我似乎无法将它们组合在一起,因为我不知道如何像我使用'%f'
格式化“float”那样格式化十进制。所以我的问题是,如何以我想要的方式完成这件事
编辑:这里使用的power-8就是一个例子。功率可能是可变的。我还想知道我是否可以高精度地打印两个数字的差异
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
您只展示了10**-8的解决方案。如果数字幂是可变的呢?如果它发生更改怎么办?以下代码生成错误:
>>从十进制导入十进制>>>a=10**-8>>打印(“%decimal(a))回溯(最近一次调用):文件“”,第1行,在TypeError:*wants int
@MerajAlMaksudMasuk中,您需要在格式中指定两个数字-小数位数和数字。最好使用.format
-样式格式,而不是基于%
的格式。对于基于%
的格式,一个十进制
实例首先被转换为最接近的浮点
,这可能会引入舍入错误。对于.format
样式的格式,格式直接应用于实际的十进制
值,无需进行浮点
转换。(假设Python>=3.1。)