2

我正在尝试将我的程序的结果扩展到小数点后 8 位。我浏览了这个页面(http://www.cplusplus.com/reference/ios/ios_base/precision/)但我没有任何运气改变结果。有什么建议么?谢谢。

#include <iostream>
#include <math.h>

using namespace std;

long double taylorSeriesToCalculateCosine(long double x, int degree);
long factorial( int input );

int main(int argc, const char * argv[])
{
    cout << "Cosine of .3: ";
    cout << taylorSeriesToCalculateCosine(.3,3) << endl;

    return 0;
}

// taylor series to calculate cosine
long double taylorSeriesToCalculateCosine(long double x,int degree){

    int i = 0;
    long double accumulation = 0;
    int cosInputArray[4] = {1,0,-1,0};

    while (i < degree) {

        int input = cosInputArray[i%4];

        accumulation += input*((pow(x, i))/factorial(i)); 
        i++;
    }

    return accumulation;
}

输出:

Cosine of .3: 0.955
4

2 回答 2

5

您需要std::setprecision<iomanip>标题:

cout << setprecision( 8 ) << taylorSeriesToCalculateCosine(.3,3) << endl;

如果您希望结果始终具有一定的宽度,请使用

cout << setfill('0') << left << setw(10) << setprecision(8)
     << taylorSeriesToCalculateCosine(.3,3) << endl;
于 2013-03-15T21:17:12.313 回答
2

正如链接中的文章所述:

cout << "Cosine of .3: ";
std::cout.precision(10);
cout << taylorSeriesToCalculateCosine(.3,3) << endl;

就是这样。

于 2013-03-15T21:18:04.997 回答