Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 打印无指数形式/科学符号的十进制数_Python 3.x_Floating Point_Precision - Fatal编程技术网

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。)