[英]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位數等於0
: 1350851717672992000
。 在Python中, 9**19
給了我1350851717672992089L
。 似乎浮點問題。 我怎樣才能提高pow
的精確度? 或如何大跳更好的精度比功率pow
?
我正在使用gcc版本4.8.2進行編譯。
這確實是一個浮點問題:典型的64位double
精度僅提供53位,或大約15位十進制數字的精度。
您可能(或可能不會)從long double
獲得更多精度。 或者,對於大約10 19的整數,您可以使用uint64_t
。 否則,沒有更精確的標准類型:您需要一個庫,如GMP或Boost.Multiprecision 。
double
的精度約為16位十進制數。
這意味着,只有前16個十進制數字是精確的,其余數字與噪聲一樣好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.