Python 无法用科学符号打印p值

Python 无法用科学符号打印p值,python,Python,我无法在python中打印正确的p值 from statsmodels.stats.proportion import proportions_ztest from decimal import Decimal count = 6726 nobs = 592458 value = 0.6407 stat, pval = proportions_ztest(count, nobs, value) print('p-value =','{:.20e}'.format(Decimal(pval)))

我无法在python中打印正确的p值

from statsmodels.stats.proportion import proportions_ztest
from decimal import Decimal
count = 6726
nobs = 592458
value = 0.6407
stat, pval = proportions_ztest(count, nobs, value)
print('p-value =','{:.20e}'.format(Decimal(pval)))
它打印出
p-value=0.00000000000000000000 E+20
我认为是零

我使用另一个程序来计算p值,它是
2.22e-16
,它是
0.000000000000000222


如何用python打印
2.22e-16

无法再现打印问题-如果您的结果中包含
2.22e-16
,您可以使用以下工具打印:

from decimal import Decimal 

whatever = 2.22e-16
print('{:.20e}'.format(Decimal(whatever)))
输出:

2.22000000000000008179e-16
# different from "input" due to float representation error
p-value = 2.21999999999999997153e-20  

即使您使用设置为
2.22e-16
的(较低分辨率)浮点,您也会得到与您观察到的不同的输出(
0.00000000000000000000e+20
):

输出:

2.22000000000000008179e-16
# different from "input" due to float representation error
p-value = 2.21999999999999997153e-20  
我首先认为您可能需要调整精度,但是当您从数字创建Decimal()时,python会自动为您调整精度:请参见
getcontext().prec



您使用的函数返回一个浮点值-如果它被打印为
0.00000000000000e+20
,那么就是从中返回的值-如果您对这个结果不满意,您需要寻找其他类型的函数库,它可以满足您的需要,并且在内部使用更高的精度

什么是
比例测试
?我在post
比例测试
中添加了链接,返回的p值为0。对打印逻辑的任何调整都不会改变这一点。P值在数学上不可能为零-您正在询问如何打印
2.22e-16
,但您的库返回
0.0e+20
。如果变量包含
0.0000000000 e+20
,则无法打印
2.22e-16
。哪些其他软件为您提供了2.22e-16结果?它的精度是多少?计算中还有哪些其他参数?使用了哪个默认值?您确定实现是100%等效的吗?对于上述url中给出的示例,它们是否具有相同的值?