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);
}}
}
-
Keine 2 Sekunden
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39342.html