Я не могу ответить на специфическую для C # часть вопроса, но должен отметить, что вы, вероятно, упускаете общую проблему с числами с плавающей запятой.
Как правило, целочисленность не очень хорошо определена для чисел с плавающей точкой. По той же причине, что равенство не очень хорошо определено на поплавках. Вычисления с плавающей запятой обычно включают ошибки округления и представления.
Например, 1.1 + 0.6 != 1.7
.
Да, именно так работают числа с плавающей запятой.
Здесь 1.1 + 0.6 - 1.7 == 2.2204460492503131e-16
.
Строго говоря, самое близкое к равенству сравнение, которое вы можете сделать с помощью чисел с плавающей запятой, - это сравнение с выбранной точностью .
Если этого недостаточно, вы должны работать с представлением десятичного числа, с представлением числа с плавающей запятой со встроенным диапазоном ошибок или с символьными вычислениями.