2014-05-06 54 views
0

所以我在這裏和其他地方看到了其他一些關於提高小數精度的帖子,但出於某種奇怪的原因,我不能讓我的生活得到它的工作。這是我得到的:在C++中的精確度

//Euler's Method Approximation 

#include <iostream> 
#include <cmath> 
#include <iomanip> 

using namespace std; 

int main() 
{ 
    int n; 
    int i=1; 
    double h; 
    double x_n; 
    double y_n; 


    cout << "Enter n: " ; 
    cin >> n; 
    cout << endl << "Enter h: " ; 
    cin >> h; 
    cout << endl << "Enter x_0: "; 
    cin >> x_n; 
    cout << endl << "Enter y_0: "; 
    cin >> y_n; 

    cout << "n=" << i << " x=" << x_n << " y=" << y_n << endl; 
    ++i; 

    while(i<n+1) 
    { 
     y_n = y_n + 3*x_n*h*y_n;   
     x_n = x_n + h; 
     cout << "n=" << i << " x=" << x_n << " y=" << setprecision(6) << y_n << endl; 
     ++i; 
    } 
    return(0); 
} 

我爲這個爛攤子道歉。只是在時間緊迫的時候把它扔掉了,但現在我有更多的時間來看它了。我可能做錯了什麼?數學肯定會根據輸入產生任意精度的小數,並且所有變量類型都應該是這樣。即使有iomanip圖書館在那裏。任何指針? (仍然只打印到百萬分之一)

+0

正常工作對我來說,你必須是關於我更具體的/ O –

+0

運行它有n = 8小時= .2 X_0 = 1 ,y_0 = 8。你得到n = 8的6位小數? –

+0

yup:http://ideone.com/GKvznS –

回答

0

std::fixed放在cout << "n=" << i << " x=" << x_n << " y=" << setprecision(6) << y_n << fixed << endl;的末尾,如@ 40two在評論中所建議的那樣。