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

## Ответ

```
0.1 + 0.2 != 0.3
```

## Объяснение

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

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

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

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

## Ссылки

* [0.30000000000000004.com](http://0.30000000000000004.com/)

[Задача](https://andreyakinshin.gitbook.io/problembookdotnet/ru/math/eps-p)
