Номер статьи: KB000019
Связанные блоки:
Из-за особенностей внутреннего представления вещественных чисел, их сравнение с помощью оператора «=» некорректно.
Вещественные числа могут немного отличаться друг от друга, в зависимости от способа их получения. Например:
Math.Round(12.12, 2) = 12.120000000000001
Math.RoundUp(12.119, 2) = 12.119999999999999
Math.RoundDown(12.121, 2) = 12.120000000000001
Следовательно, результат операции сравнения Math.RoundUp(12.119, 2) = Math.RoundDown(12.121, 2) будет отрицательным.
Сравнивать вещественные числа нужно с заданной допустимой погрешностью:
Math.Abs(Double1-Double2)<0.00...01
См. также: