Почему неправильный результат при выборе checkbox?

Задача: Если checkbox НЕ выбран, то считается weight/height2, если же выбран, тогда будет считаться по формуле для имперских мер: 703*weight/height2.

Только вот почему-то результат для имперской меры отличается от результата метрической, причём разительно.

Вот кусок кода, где происходит вычисление конечного результата

if (imperialBox.Checked == false)
{
    MBICalc = weight / (Math.Pow(height, 2));
    result.Text = MBICalc.ToString("N4");
}
else
{
    MBICalc = weight / 703 * (Math.Pow(height, 2));
    result.Text = MBICalc.ToString();
}

Ответы (1 шт):

Автор решения: aepot

Немного математики, в условии вы пишете одну формулу, а в коде у вас другая была. Для возведения в квадрат лучше использовать умножение, оно выглядит проще и работает быстрее.

MBICalc = weight / (height * height);
if (imperialBox.Checked)
{
    MBICalc *= 703;
}
result.Text = MBICalc.ToString("N4");

Старайтесь избегать повторяющегося кода. Повторяющийся код сложнее отлаживать и исправлять.

→ Ссылка