Почему 0,1 + 0,2 == 0,3 в C#, когда использовать тип с плавающей точкой
Во многих языках программирования такие операции, как 0,1 + 0,2, не будут равны 0,3, а скорее 0,30000000000000004. И, таким образом, проверки типа 0.1+0.2 == 0.3 вернут ложь.
Насколько мне известно, это связано со стандартом IEE 754, и поэтому он распространен для многих языков.
Такое же поведение можно найти в C#. Я использовал следующий фрагмент кода, чтобы проверить это:
static void Main(string[] args)
{
double x = 0.2;
double y = 0.1;
double res = 0.3;
double z = x + y;
Console.WriteLine("bool result = {0}", z == res); // outputs false
Console.ReadLine();
}
но если я использую тот же код, но с переменными с плавающей точкой, все работает по-другому:
static void Main(string[] args)
{
float x = 0.2f;
float y = 0.1f;
float res = 0.3f;
float z = x + y;
Console.WriteLine("bool result = {0}", z == res); // outputs true
Console.ReadLine();
}
Кто-нибудь может мне это объяснить?