Runden funktioniert nicht exakt



  • hallo leute,

    ich möchte einen zahl auf die 2 nachkommastelle runden. aus 2.445 soll 2.45 werden, aus 2.444 soll 2.44 werden (also <5 abrunden und >=5 aufrunden).
    ich wollte das wie folgt realisieren. das problem liegt scheinbar in der zeile b= ((a*100)-floor(a*100));
    für b ergibt sich zwar 0.5 , aber er springt dann nicht in die >=0.5 if bedingung. wenn ich double b=0.5; setze funktioniert es.
    habt ihr eine idee woran es liegen könnte?

    quellcode:

    void main()

    {

    double a=2.445;
    double b;

    {
    // printf("floor a = %lf\n", floor(a));
    // b= ((a*100)-floor(a*100));
    printf("b = %lf\n",b);

    if(b>=0.5)
    {
    printf("1\n");
    printf("a (ungerundet)= %lf\n", a);
    a=ceil(a*100)/100;
    printf("a = %lf\n",a);
    }

    if(b<0.5)
    {
    printf("2\n");
    printf("a (ungerundet)= %lf\n", a);
    a=floor(a*100)/100;
    printf("a = %lf\n",a);
    }

    }
    }




Anmelden zum Antworten