There is a classic text,
What Every Computer Scientist Should Know About Floating-Point Arithmetic[
^] by David Goldberg that should help you understand what's happening here. It's not specific to C#, but rather the IEEE 754 standard for floating-point numbers that C#
uses.
Suffice to say, it
is normal, merely a common rounding error, similar to what you might have encountered in grade school when trying to represent the result of an expression such as
10 / 3
in decimal form...