Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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中更改数值精度?_Python_Precision - Fatal编程技术网

如何在python中更改数值精度?

如何在python中更改数值精度?,python,precision,Python,Precision,如果我用python编写1e-15,python可以将该数字与零区分开来,但如果我编写1e-16,python无法将该数字与0区分开来。所以python精确到第16位。是否有办法将该精度降低到例如10位?怎么用?我可以用一些计算吗 感谢您的帮助。如果您希望在计算中使用精确的算术,强烈建议不要使用默认的float类型。见正式文件的一节 这就是为什么你的生活会好得多。它有几种控制精度的方法 在这里,我们全局更改精度: 来自十进制输入的>>* >>>getcontext().prec=6 >>>十进制

如果我用python编写1e-15,python可以将该数字与零区分开来,但如果我编写1e-16,python无法将该数字与0区分开来。所以python精确到第16位。是否有办法将该精度降低到例如10位?怎么用?我可以用一些计算吗


感谢您的帮助。

如果您希望在计算中使用精确的算术,强烈建议不要使用默认的
float
类型。见正式文件的一节

这就是为什么你的生活会好得多。它有几种控制精度的方法

在这里,我们全局更改精度:

来自十进制输入的
>>*
>>>getcontext().prec=6
>>>十进制(1)/十进制(7)
十进制('0.142857')
>>>getcontext().prec=28
>>>十进制(1)/十进制(7)
十进制(“0.1428571428571428571428571428571429”)
这里我们只针对一个数字:

十进制('0.1428571428571428571428571429')。量化('0.01') 十进制('0.14')
您可以找到更多的示例。

看看精度可控的。显示一些代码。区分1e-16和0应该没有问题。我猜他在解释器中键入
>>1e-15
,看到打印的表示值,然后在解释器中键入
1e-16
,看到
0.0
作为表示。真正的测试类似于
1e-256>0
,在这种情况下可以看到
true
False
。表示不是事实……如果我在解释器中键入
1e-16
,我将返回
1e-16
。不是零。不过这是最新的CPython版本。@gilch:取决于Python解释器的版本,但是比起Python无法处理小数字,您可以更快地表示
0.0
。。。