簡體   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