为什么我的程序只打印到小数点后6位?

我已经创建了一个程序来计算从零到无穷大的积分值,但是当我打印我的答案时,它只打印到6位小数,有人可以告诉你这是为什么吗?

首先十分感谢 :)

#include  #include  #include  double integral_Function(double x){ double value; value = 1/((1+ pow(x, 2))*(pow(x, 2/3))); return value; } double trapezium_Rule(double lower, double upper, int n){ double h; double total; h = (upper - lower)/n; total = (h/2) * (integral_Function(upper) + integral_Function(lower)); for(int i = 1; i < n; i++){ total = total + (h * integral_Function(lower + (i * h))); } return total; } int main() { double sum = 0; double upper = DBL_MIN * 1.001; double lower = DBL_MIN; while (upper <= DBL_MAX){ sum += trapezium_Rule(lower, upper, 5000) * 2; lower = upper; upper = upper * 1.02; } printf("%f", sum); return 0; } 

这是因为您使用字符串格式%f ,默认情况下只能在逗号​​后打印6位数字。 要增加它,只需指定所需的长度:

 printf("%.9f", sum); //note the 9 - it is the length.