On 28 Nov., 18:47, "Maic Schmidt" <(EMail Removed)> wrote:
> Hi,
>
> 2 mod 0.2 should be 0, right?
Yes.
> But it isnt:
>
> #include <math.h>
> #include <stdio.h>
>
> int main(void)
> {
> * double x=2;
> * double y=0.2;
> * printf("%g mod %g = %g\n",x,y,fmod(x,y));
> * return 0;}
>
> => 2 mod 0.2 = 0.2
>
> Why not?
Because what you wrote as 0.2 isn't 0.2, but some number close to that
value. Just as 1/3 cant be represented precisely as a fraction,
neither can 0.2 (and 0.1 for that matter).
The result is accurate, but your perception about the representation
of floating point numbers is insufficient.
/Peter
