“Eps” (Solution)

Answer

1
0.1 + 0.2 != 0.3
Copied!

Explanation

The Double numbers use the IEEE 754 specification and they are stored in 64-bit binary format. Unfortunately, most decimal non-integer numbers can not be represented in the binary format. This fact affects affects to performing of arithmetic operations with floating-point numbers:
1
// Displays '5.5511151231257827E-17'
2
Console.WriteLine("{0:R}", 0.1+0.2-0.3);
Copied!
The proper way to compare double numbers is comparing with some epsilon. An example:
1
public static bool IsEqual(double a, double b, double eps = 1e-9)
2
{
3
return Math.Abs(a - b) < eps;
4
}
Copied!

Links

Problem
Copy link