Why is my program only printing to 6 decimal places?

你离开我真会死。 提交于 2019-12-13 00:57:40

问题


Ive created a program to compute the value of an integral from zero to infinity, however when i go to print my answer it only prints it to 6 decimal places, could someone advise on why this is?

Thanks very much in advance :)

#include <stdio.h>
#include <math.h>
#include <float.h>

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;
}

回答1:


This is because you use string format %f which is by default only print 6 digit after comma. To increase it, simply specify the length that you want:

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


来源:https://stackoverflow.com/questions/35673350/why-is-my-program-only-printing-to-6-decimal-places

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!