使用长整数的sqrtl()
时精度下降
我需要使用一个变量来存储值,因为我希望用户在0到10 ^ 18的范围内键入自己的值,因此在这种情况下使用long long int是有意义的。 但这是发生错误的地方,我无法正确解决它。
unsigned long long int a = 999999999999999999;
cout << fixed;
cout << (floor(sqrtl(999999999999999999)) == sqrtl(999999999999999999)) << endl;
cout << floor(sqrtl(999999999999999999)) << endl;
cout << (sqrtl(999999999999999999)) << endl;
cout << a << endl;
cout << (floor(sqrtl(a)) == sqrtl(a)) << endl;
cout << floor(sqrtl(a)) << endl;
cout << (sqrtl(a)) << endl;
在我的机器上,输出为
0
999999999.000000
1000000000.000000
999999999999999999
1
1000000000.000000
1000000000.000000
它显示了使用sqrtl(a)与sqrtl(999999999999999999)相比的损失精度
我希望能够在使用变量的同时获取正确的值