如何以更高的准确度打印出双号?

时间:2015-03-19 15:39:46

标签: c++

我想用我的二分法打印出一个双号。我不太清楚如何。我可以在小数点后返回最多4位精度的双精度数,但这是默认值我接受它。如何以更准确的方式打印出来。我想尽可能随时打印。

void bisection(double start, double end, double tol, double (f)(double) ){

    double x = (end + start)/2;
    double num = f(x);
    if( std::abs(num) < tol) {
    //  return x;
    printf("Our approximation is: %20.10f", x);

    }

    if( num == 0){
        return x;
    }

    if( num < 0){
        std::cout << "f(x) is less than 0" << std::endl;
        std::cout << "f(x) = " << num << std::endl;
        start = x;
        bisection(start,end,tol, f );
    }
    else if(num > 0){
        std:: cout << "f(x) is greater than 0" << std::endl;
        std::cout << "f(x) = " << num << std::endl;
        end = x;
        bisection(start,end,tol, f );
    } 
}

2 个答案:

答案 0 :(得分:1)

使用std :: setprecision(N),其中N是要打印的总位数。

double x = 1.23456789;
std::cout << "x: " << std::setprecision(3) << x << std::endl; // Prints 1.23
std::cout << "x: " << std::setprecision(7) << x << std::endl; // Prints 1.234567

答案 1 :(得分:0)

对于C,请尝试以下

    # include <float.h>
     .  .  .
    printf("Our approximation is: %20.*lf", DBL_DIG , x);

注意:%lf是double(非%f)

的正确说明符

对于C ++,在输出

之前使用setprecision(DBL_DIG)