It does. You see the inherent floating point representation error. C.f.
Why would this not give the correct result?
SetFormat Float, 0.16 MsgBox % 5.85 + 0.0You could use Eval("$16g 5.85") or, if you insist on seeing a lot of decimals, Eval("$15 5.85"). Numbers larger than 2 usually have representation errors in their 16th decimal place, because doubles are only of 52 bit precision.