Эффективность использования топлива в разных единицах в 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"); }
Код начинается с определения некоторых коэффициентов преобразования для перевода между различными единицами измерения.
Затем программа получает входные данные пользователя и преобразует их в мили и галлоны США. Удобный трюк для работы с несколькими блоками состоит в том, чтобы сначала преобразовать входы в какой-то известный блок. В этом примере я выбрал мили и галлоны США, но вы можете использовать любые единицы, которые вы предпочитаете.