C # Получение странных результатов для простых математических операций
Я заметил странное поведение при добавлении двух двойных чисел, иногда это работает правильно, а иногда нет!
Вот первый пример:
double num1 = 0.1 + 0.7; //Guess the result?
Легко - 0,8 !!! или нет?
Посмотрите на странный результат:
И угадайте, что, если оператор идет внутри блока else, и печатаетnum1
- и нет, это неt печатает 0,799999999999993, печатает 0,8.
Итак, я сделал еще один шаг вперед и попробовал этот код:
if (0.1 + 0.7 == 0.8) //Returns false ??
{
Console.WriteLine("Correct");
}
Хорошо, странно, но теперь я нашел правильный путь, он должен использовать f (float). Как я помню, в double много пробелов, поэтому он может содержать более высокие числа, возможно, в этом причина.
float num2 = 0.1f + 0.7f;
if (num2 == 0.8f) //Perfect - finally works !!!
{
Console.WriteLine("Correct");
}
else
{
Console.WriteLine(num2);
}
Но сейчас я пытаюсь это сделать - и опять возвращается ложь, почему?
if (0.1f + 0.7f == 0.8f) //Returns false :(
{
Console.WriteLine("Correct");
}
Результаты часов при его отладке:
Может кто-нибудь объяснить мне, чтоздесь не так? Это ошибки?
Заранее спасибо.