我正在研究萊布尼茲問題,如https://www.hackerrank.com/challenges/leibniz這裏所示。其計算1-1/3 + 1/5-1/7 + 1/9 + ...序列中的每個元素可以定義爲(i)=( - 1)^ i /(2 * i + 1)從0開始。如何提高由於C++分區中精度不足導致的結果精度
問題要求從第一項到第n項加上並輸出結果。我的程序通過了基本的測試用例。但在其他情況下失敗。
我想我的程序錯誤是由於數字足夠大時的精度造成的。
任何人都可以提供一種方法來提高結果的精度嗎?
double leibnitz(int n) {
double res = 0.0;
for (int i = 1; i <= n; i++) {
res += 1.0/(2 * i - 1) * (i % 2 == 1 ? 1.0 : -1.0);
}
return res;
}
什麼錯?你沒有提到究竟出了什麼問題,或者什麼樣的輸入觸發了這種錯誤的行爲。 – Borgleader
Ace。什麼是問題? –
這可能會有所幫助http://stackoverflow.com/questions/14637621/c-calculating-more-precise-than-double-or-long-double?rq=1 –