Эффективность использования топлива в разных единицах в C#

Люди в Соединенных Штатах, Канаде, Соединенном Королевстве и некоторых других местах измеряют эффективность использования топлива в милях на галлон. Как и следовало ожидать, страны, использующие метрическую систему, могут измерять эффективность использования топлива в километрах на литр, но многие из них также измеряют расход топлива в литрах на 100 километров. Чтобы еще больше запутать ситуацию, Соединенное Королевство, Канада и другие используют имперский галлон, который отличается от американского галлона, поэтому вы даже не можете сравнивать значения в милях на галлон в разных странах.

В этом примере вычисляется эффективность использования топлива в трех системах: мили США за галлон, километры Великобритании на галлон и литры на 100 километров. Следующий код выполняет вычисления.

// Коэффициенты пересчета.
private const float miles_per_km = 0.621371192f;
private const float us_gallons_per_liter = 0.264172052637296f;
private const float uk_gallons_per_liter = 0.2199692483f;

// Вычислить статистику пробега.
private void btnCalculate_Click(object sender, EventArgs e)
{
    // Получаем входные данные.
    float miles = float.Parse(txtDistance.Text);
    float gallons = float.Parse(txtFuel.Text);

    // Преобразуем в мили и галлоны США.
    if (radKilometers.Checked) miles *= miles_per_km;
    if (radUkGallons.Checked)
    {
        gallons *= us_gallons_per_liter / uk_gallons_per_liter;
    }
    else if (radKilometers.Checked)
    {
        gallons *= us_gallons_per_liter;
    }

    // Вычислить значения производительности.
    float us_mpg = miles / gallons;
    float us_gal_per_100_miles = 100 / us_mpg;

    // Значения в США.
    txtUsMpg.Text = us_mpg.ToString("0.00");
    txtUsGalPer100Miles.Text =
        us_gal_per_100_miles.ToString("0.00");

    // Значение Великобритании.
    float uk_gals = gallons * uk_gallons_per_liter /
        us_gallons_per_liter;
    float uk_mpg = miles / uk_gals;
    float uk_gal_per_100_miles = 100 / uk_mpg;
    txtUkMpg.Text = uk_mpg.ToString("0.00");
    txtUkGalPer100Miles.Text =
        uk_gal_per_100_miles.ToString("0.00");

    // Метрические значения.
    float liters = gallons / us_gallons_per_liter;
    float kilometers = miles / miles_per_km;
    float km_per_liter = kilometers / liters;
    float l_per_100_km = 100 / km_per_liter;
    txtKpl.Text = km_per_liter.ToString("0.00");
    txtLiterPer100km.Text = l_per_100_km.ToString("0.00");
}

Код начинается с определения некоторых коэффициентов преобразования для перевода между различными единицами измерения.

Затем программа получает входные данные пользователя и преобразует их в мили и галлоны США. Удобный трюк для работы с несколькими блоками состоит в том, чтобы сначала преобразовать входы в какой-то известный блок. В этом примере я выбрал мили и галлоны США, но вы можете использовать любые единицы, которые вы предпочитаете.

Источник: http://csharphelper.com/blog/2016/08/compare-fuel-efficiency-in-different-units-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector