I guess I'm hitting a precision issue with my c++ program. And I don't understand why I'm getting different results in my values.

`res` equals to `1321.0000001192093` if I write:

```
float sy = -0.207010582f;
double res = -1512.*((double)sy - (2. / 3.));

```

but res2 equals to `1320.9999999839999` if I write:

```
double res2 = -1512.*(-0.207010582 - (2. / 3.));

```

Why even syd is different from syd2 when I write this:

```
double syd  = -0.207010582f;
double syd2 = -0.207010582000000000;

```

Can somebody give me a hand, to cast my float into a double properly and to understand what's going on ?