我想用我的二分法打印出一个双号。我不太清楚如何。我可以在小数点后返回最多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 );
}
}
答案 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)