Well I just tried your code in c# .net 4.0.
I get 47.100023 too. It should work the same in VB too, because they are all .net.
I do a lot of work in numerical simulation. So this was one of the first things I noticed.
However, in more "general" programming, you will probably never notice these small errors. And it only happens with floating points too. So if you are working with ints, you will never encounter this problem.
Besides, if you print out a floating point number, the print function may be smart enough correct for the error. So you will never see it unless you spend time in the debugger monitoring each variable.