...
cout << setprecision(100) << pow((3+sqrt(5.0)),28) << endl;
...
135565048129406451712
這是不夠精確,但。
$ bc <<< "scale = 100; (3+sqrt(5.0))^28"
輸出
135565048129406369791.9994684648068789538123313610677119237534230237579838585720347675878761558402979025019238688523799354
這就是我想要的。我正在設置cout
精度,因此它必須是sqrt
,pow
或+
正在失去精度?
'bc'具有無限精度,C++中的'double'沒有。 – Barry 2015-04-05 16:28:05
您需要使用一個固定的十進制精度數字來代表這一點。 'double'不支持這個。 – 2015-04-05 16:28:14
標準雙打通常只有64位精度,遠遠低於100位有效數字。如果你需要的話,你需要使用任意精度的數學庫。 – 2015-04-05 16:28:50