如果d的范围是1 <= d <= 10 ^ 101并且n是1 <= n <= 200,则双倍范围是2.3E-308到1.7E + 308。当我将输入11111111111111111111作为d时,当我向终端显示值时,值d变为11111111111111111000.000。这意味着它无法正确接受输入,那么它将如何为10 ^ 101提供正确的值。我需要知道d的第n个根。 d将始终采用p = k ^ n的形式。这就是我添加pow功能以了解第n个根的原因。但问题是p的范围很大。我正在尝试的是解决这个问题 Power of Cryptography !
int main(){
double d,n;
scanf("%lf%lf", &n, &d))
{
printf("%lf\n", pow(d, 1/n));
}
return 0;
}
答案 0 :(得分:4)
double
精度数不能保存2.3E-308到1.7E + 308之间的所有值,它能够将这些数字之间的值保持在大约15位小数的精度。< / p>
这意味着某些数字(例如您的示例)需要比8字节数据可以存储的更精确。