«Eps» (Решение)

Ответ

0.1 + 0.2 != 0.3

Объяснение

Числа типа Double представляются согласно спецификации IEEE 754 и хранятся в 64-разрядном бинарном формате. К сожалению, многие десятичные нецелые числа невозможно представить в таком формате, что часто сказывается при выполнении арифметических операций над числами с плавающей запятой:

// Displays '5.5511151231257827E-17'
Console.WriteLine("{0:R}", 0.1+0.2-0.3);

Лучше всего сравнивать double-числа с указанием точности сравнения. Пример:

public static bool IsEqual(double a, double b, double eps = 1e-9)
{
    return Math.Abs(a - b) < eps;
}

Ссылки

Задача

Last updated