It will be mostly because of the fact that most decimal numbers cannot be represented exactly in binary, in much the same way as thirds/ninths/etc can't be represented exactly in decimal, and as a result there is a small imprecision.
Sometimes (not always) this imprecision will show when the number is printed.
In many cases it is possible to see what lies beyond the digits usually printed, by subtracting by an exact number to drop some significant digits from the start and print more at the end:
Code: Select all
print 9701/100 '' 97.01000000000001
print 9701/100 - 97 '' 0.01000000000000512
print csng(9701/100) '' 97.01
print csng(9701/100) - 97 '' 0.01000214
(97.01... is a good example here, because we can easily lose three significant digits from the start by subtracting 97.0, which is easy to represent precisely in a precision binary number.)