c++中的精度

Precision in C++

本文关键字:精度 c++      更新时间:2023-10-16

所以我在这里和其他地方看到了一些关于提高十进制精度的帖子,但由于一些奇怪的原因,我的生活不能让它工作。这是我得到的:

//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图书馆。指针吗?(仍然只输出百万分之一)

按照@40two在评论中的建议,将std::fixed放在cout << "n=" << i << " x=" << x_n << " y=" << setprecision(6) << y_n << fixed << endl;的末尾

对于ofstream,您可以使用precision方法,http://www.cplusplus.com/reference/ios/ios_base/precision/