繁体   English   中英

如何在大数(10 ^ 19)的C ++中提高pow的精度?

[英]How to raise the precision of pow in C++ for large numbers (10^19)?

我想要计算9^19 我的代码是:

    cout.setf(ios::fixed, ios::floatfield);
    cout.setf(ios::showpoint);
    cout<<pow(9,19)<<endl;

结果的最后2位数等于01350851717672992000 在Python中, 9**19给了我1350851717672992089L 似乎浮点问题。 我怎样才能提高pow的精确度? 或如何大跳更好的精度比功率pow

我正在使用gcc版本4.8.2进行编译。

这确实是一个浮点问题:典型的64位double精度仅提供53位,或大约15位十进制数字的精度。

您可能(或可能不会)从long double获得更多精度。 或者,对于大约10 19的整数,您可以使用uint64_t 否则,没有更精确的标准类型:您需要一个库,如GMPBoost.Multiprecision

double的精度约为16位十进制数。

这意味着,只有前16个十进制数字是精确的,其余数字与噪声一样好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM