Вычисление в C# с “бесконечным” результатом

Хорошие,

Я новый в этом. Я изучаю с видео MVC. И с какими-то ресурсами как гид других страниц. И я появилась лагуна относительно упражнения, которое я достал из этой страницы: 1.8. Упражнения с Формулами Эхерсисиос с Формулами следует, что применяя этот код:

    static void Main(string[] args)
    {
        double x, y, z;
        Console.WriteLine("Ingrese el valor de X.");
        x = double.Parse(Console.ReadLine());
        Console.WriteLine("Ingrese el valor de Y,");
        y = double.Parse(Console.ReadLine());

        z = (2.0 * x * x - 9.0 * x + 6.0) / ((y - 2.0) * (y * 3.0));

        Console.WriteLine("El valor de Z es:" + z);
        Console.Write("Presiona la tecla ENTER para continuar.");
        Console.ReadLine();
    }

И когда я это выполняю, дав ему инструкции, он говорит мне, что результат бесконечный. Возможно? Я это спрашиваю с неведения.

Спасибо заранее во все.

0
задан 08.04.2016, 08:46
2 ответа

Давайте анализировать формулу matemáticamente:

z = (2.0 * x * x - 9.0 * x + 6.0) / ((y - 2.0) * (y * 3.0));

reemplazemos

a = (2.0 * x * x - 9.0 * x + 6.0)
b = ((y - 2.0) * (y * 3.0))

следовательно

z = a / b

В делении этого типа интересные случаи будут, когда числитель (a) или знаменатель (b) будьте (n) равно 0

У нас есть следующие случаи:

Если a == 0 || a == -0 и b != 0

Тогда:

z == 0/b || z == -0/b
z == 0 || z == -0

В этом случае z будет 0

Если b == 0 и 1 != 0

z == a/0 || z == a/-0 
z == ∞ || z == -∞

В этих случаях смоги давать Double.PositiveInfinity (∞) или Double.NegativeInfinity (-∞) соответственно

Если a == 0 y b == 0

z = 0/0
z = NaN

В этом случае результат был бы Double.Nan

Больше информации о Double. PositiveInfinity, Double. NegativeInfinity и Double. NaN

2
ответ дан 24.11.2019, 14:37

В C# да возможно. Когда ты делаешь арифметические вычисления используя типы double или float существуют какие-то специальные результаты:

  • Положительное число между нулем (N / 0): Infinity (положительная бесконечность)
  • Отрицательное число между нулем (-N / 0): -Infinity (отрицательная бесконечность)
  • Нуль между нулем (0 / 0): NaN (Not в Number, не действительное число)

Следовательно возможно, что в формуле, которую ты использовал, ты получил 0 в знаменателе части, в зависимости от которой стоимость ты ввел информацию в компьютер для X и Y, именно поэтому результат "бесконечный".

0
ответ дан 24.11.2019, 14:37