关于PDL::gsl::cdf(Perl)中的gsl_cdf_tdist_P

关于PDL::gsl::cdf(Perl)中的gsl_cdf_tdist_P,perl,statistics,pdl,Perl,Statistics,Pdl,当p值小于1E-16时,您能告诉我如何从gsl_cdf_tdist_p函数获取完整的p值吗?我得到的是0 谢谢, 伍迪 我的输入值如下: my @n = qw (1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2); my @t = qw (11 12 13 12 13 11 14 11 12 13 12 13 11 14 11 12 13 12 13 11 14); 我找到了解决这个问题的简单方法。我用gsl\u cdf\u tdist

当p值小于1E-16时,您能告诉我如何从gsl_cdf_tdist_p函数获取完整的p值吗?我得到的是0

谢谢, 伍迪

我的输入值如下:

my @n = qw (1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2);
my @t = qw (11 12 13 12 13 11 14 11 12 13 12 13 11 14 11 12 13 12 13 11 14);

我找到了解决这个问题的简单方法。我用
gsl\u cdf\u tdist\u Q
得到p值。p值不限于十进制后的16位,因为它们不是像
(1-gsl\u cdf\u tdist\u p)
那样重新映射的p值


Woody

欢迎来到Stack Overflow!请参加本次参观,并阅读您在这里实际可以询问的主题。你也可以访问meta站点,学习如何在stack overflow@Nearior上提问。虽然OP可以更好地解释这个问题,但这个问题完全符合主题。他问为什么Perl模块中的函数
gsl\u cdf\u tdist\u P
在预期值小于1E-16时返回零。我猜问题在于他使用的是
打印
,在许多系统上,打印精度只有15位。@WoodyLin你能不能请你的问题显示你使用的确切代码?@ThisSuiteisBlack不是的,我认为,
print
函数可能有问题,因为
gsl\u cdf\u tdist\u P
应该返回一个双倍数字。有没有办法打印小数点后的所有数字?一般来说,您可以将
sprintf
%.f
一起使用,其中n是所需的小数位数。但这并不总是正确的
printf'%.35f',0.1234567890121345678901234567890
在我的机器上给出
0.123456789012134567736988623209981597
my @n = qw (1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2);
my @t = qw (11 12 13 12 13 11 14 11 12 13 12 13 11 14 11 12 13 12 13 11 14);