Можно создать дубликат:
Why is floating point arithmetic in C# imprecise?Почему 0,1 * 10-1 не равно 0?
Console.WriteLine(0.5f * 2f); // 1
Console.WriteLine(0.5f * 2f - 1f); // 0
Console.WriteLine(0.1f * 10f); // 1
Console.WriteLine(0.1f * 10f - 1f); // 1.490116E-08
0.1f * 10f - 1f
Почему в конечном итоге 1.490116E-08
(0.0000001490116
)?
См: [ "Почему может быть не десятичных чисел (http://stackoverflow.com/questions/1089018/why-cant-decimal-numbers-be-represented-exactly-in-binary) – 2010-11-25 00:41:07