floats are not precise. also they are stored as base 2, and typically are converted to base 10 to display. this is an issue because some base 10 factions do not convert to base 2, they are irrational. similar 1/3 is .33333... in decimal. so you do not get the same number when you convert a base10 literal fraction to Float (base 2), and then back to base10 to display. also depending on the digits Float has ~7 to 9 decimal digits of precision.

https://en.wikipedia.org/wiki/Single-precision_floating-point_format

in .net, a conversion of Float to Decimal only has 7 digits of precision by design (see docs). you can pick up a few more digits of precision by converting to Double first, though you will may get a different base 10 number when its converted to base 10 (as in your case).

```
Dim Valeur As Single = 11764.7666
Dim Dbl as Double = Valeur '11764.7666015625
Dim Dec As Decimal = Dbl '11764.7666015625
```

in short if you need accurate decimal fractions, never use floating point numbers.