Полное руководство по конвертации единиц: формулы, код и инструменты для каждого измерения
Рецепт требует 350°F, а вы знаете только Цельсий. На транспортной этикетке 22 lbs, а ваша система ждёт килограммы. Клиент шлёт размеры в футах, а ваш CAD работает в метрах. Конвертация единиц — одна из тех задач, что выглядят тривиальными, пока не ошибётесь — и последствия от испорченного ужина до крушения межпланетного аппарата за 327 миллионов.
Это руководство покрывает четыре типа измерений, которые вы будете конвертировать чаще всего — длину, вес, температуру и объём — с точными формулами, кодом на JavaScript и Python, который можно скопировать в свои проекты, и быстрыми таблицами для устного счёта.
Почему конвертация единиц до сих пор спотыкает разработчиков
Вы можете подумать, что ошибки единиц — это решённая проблема. Это не так.
В 1999 году NASA Mars Climate Orbiter сгорел в марсианской атмосфере, потому что одна инженерная команда работала в pound-force-секундах, а другая — в ньютон-секундах. Никто не поймал расхождение за месяцы расчётов траектории. Потеря: 327,6 миллиона долларов.
В 1983 году Air Canada Flight 143 («Gimli Glider») остался без топлива в воздухе, потому что наземная служба считала топливо в фунтах вместо килограммов. У самолёта было меньше половины нужного топлива.
Это крайние случаи, но мелкие ошибки единиц происходят постоянно:
- US-галлон ≠ имперский галлон. Разница около 20%. Сравнение расхода топлива между американскими и британскими цифрами бессмысленно без указания, какой именно галлон.
- Тройская унция ≠ обычная унция. Золото, котирующееся «$1900 за унцию», использует тройские унции (31,1 g), а не avoirdupois-унцию (28,35 g) на ваших кухонных весах.
- Конвертация температуры не линейна. Просто умножать нельзя — есть смещение, и его пропуск даёт сильно неверные результаты.
Метрика и имперская: две системы, одна планета
Прежде чем нырять в формулы, общая картина.
| Измерение | Метрика (SI) | Имперская / US Customary |
|---|---|---|
| Принцип построения | Десятичная — каждая единица отличается степенью десяти | Несогласованная — 12 in/ft, 3 ft/yd, 5280 ft/mi |
| Длина | метр (m) | foot (ft), inch (in), mile (mi) |
| Масса / вес | килограмм (kg) | pound (lb), ounce (oz) |
| Температура | Цельсий (°C), Кельвин (K) | Фаренгейт (°F) |
| Объём | литр (L) | gallon (gal), pint (pt), cup |
| Используется | ~95% мира | США, Мьянма, Либерия |
Метрическую систему поддерживает Международное бюро мер и весов (BIPM). С 2019 года все семь базовых единиц SI определяются фиксированными физическими константами — скоростью света, постоянной Планка, постоянной Больцмана и другими. Это значит, что метр одинаков везде во вселенной по определению.
Имперская система фактически разделяется на два варианта: US customary (используется в Америке) и Imperial (исторически использовался в Великобритании). У них общие имена для многих единиц, но некоторые определения различаются — галлоны и fluid ounce, например, не одинакового размера.
Конвертация длины: формулы и код
Длина — самое часто конвертируемое измерение. Используйте наш конвертер длины для мгновенных результатов или формулы ниже в своём коде. Если задача узкая — например, перевод роста, размеров экрана или бумаги между сантиметрами и дюймами — у нас есть отдельный практический разбор: см в дюймы — точная формула, таблицы для роста и экранов.
Ключевые коэффициенты длины
Все они точные значения, установленные Международным соглашением о ярде и фунте 1959 года:
| Конверсия | Коэффициент | Направление |
|---|---|---|
| inches → centimeters | × 2,54 | точно |
| feet → meters | × 0,3048 | точно |
| yards → meters | × 0,9144 | точно |
| miles → kilometers | × 1,609344 | точно |
| nautical miles → meters | × 1852 | точно |
Метрические приставки делают остальное лёгким: 1 km = 1000 m, 1 cm = 0,01 m, 1 mm = 0,001 m. Перемещение между метрическими единицами — просто сдвиг запятой.
Конвертация длины в коде
JavaScript:
const lengthConvert = {
inToCm: (inches) => inches * 2.54,
cmToIn: (cm) => cm / 2.54,
ftToM: (feet) => feet * 0.3048,
mToFt: (m) => m / 0.3048,
miToKm: (miles) => miles * 1.609344,
kmToMi: (km) => km / 1.609344,
};
console.log(lengthConvert.inToCm(27)); // 68.58 (27" monitor)
console.log(lengthConvert.miToKm(26.2)); // 42.164928 (marathon)
console.log(lengthConvert.mToFt(1.83)); // 6.003937... (6 ft person)
Python:
def inches_to_cm(inches: float) -> float:
return inches * 2.54
def feet_to_meters(feet: float) -> float:
return feet * 0.3048
def miles_to_km(miles: float) -> float:
return miles * 1.609344
print(inches_to_cm(27)) # 68.58
print(miles_to_km(26.2)) # 42.164928
Устный счёт для длины
- Дюймы в cm: умножайте на 2,5. Будете промахиваться на 1,6%, для бытового хватает.
- Мили в km: используйте последовательность Фибоначчи. Соседние числа Фибоначчи приближают коэффициент: 5 mi ≈ 8 km, 8 mi ≈ 13 km, 13 mi ≈ 21 km.
- Футы в метры: делите на 3,3. Человек 6 футов — это около 1,82 m.
Краткий справочник: длина
| Имперская | Метрика |
|---|---|
| 1 inch | 2,54 cm |
| 1 foot | 30,48 cm |
| 6 feet | 1,8288 m |
| 1 yard | 0,9144 m |
| 1 mile | 1,609 km |
| 1 nautical mile | 1,852 km |
Конвертация веса и массы: формулы и код
Технически «вес» — это сила тяжести на объект, а «масса» — количество вещества. В быту и в этом руководстве мы трактуем их взаимозаменяемо. Конвертируйте мгновенно с нашим конвертером веса.
Ключевые коэффициенты веса
| Конверсия | Коэффициент |
|---|---|
| kilograms → pounds | × 2,20462 |
| pounds → kilograms | × 0,453592 |
| ounces (avoirdupois) → grams | × 28,3495 |
| troy ounces → grams | × 31,1035 |
| stone → kilograms | × 6,35029 |
| stone → pounds | × 14 (точно) |
Ловушка тройской унции
Если работаете с драгметаллами, драгоценными камнями или финансовыми данными, осторожно: тройская унция (31,1035 g) примерно на 10% тяжелее стандартной унции avoirdupois (28,3495 g). Золото, серебро и платина всегда котируются за тройскую унцию. Перепутаете в финансовом приложении — расчёты сдвинутся на 10%, дорогая ошибка.
Конвертация веса в коде
JavaScript:
const weightConvert = {
kgToLbs: (kg) => kg * 2.20462,
lbsToKg: (lbs) => lbs * 0.453592,
ozToGrams: (oz) => oz * 28.3495,
gramsToOz: (g) => g / 28.3495,
stoneToKg: (st) => st * 6.35029,
};
console.log(weightConvert.kgToLbs(70)); // 154.3234 (avg adult)
console.log(weightConvert.ozToGrams(8)); // 226.796 (half pound)
console.log(weightConvert.stoneToKg(11)); // 69.85319
Python:
def kg_to_lbs(kg: float) -> float:
return kg * 2.20462
def lbs_to_kg(lbs: float) -> float:
return lbs * 0.453592
def oz_to_grams(oz: float) -> float:
return oz * 28.3495
print(kg_to_lbs(70)) # 154.3234
print(oz_to_grams(8)) # 226.796
Устный приём для веса
kg в lbs: удвойте значение и прибавьте 10%. Пример: 70 kg → 140 + 14 = 154 lbs. Точное значение 154,32 — близко достаточно.
Краткий справочник: вес
| Имперская | Метрика |
|---|---|
| 1 ounce | 28,35 g |
| 1 pound | 453,6 g |
| 1 stone (14 lbs) | 6,35 kg |
| 1 short ton (2000 lbs) | 907,2 kg |
| 1 troy ounce | 31,10 g |
Конвертация температуры: та, что отличается
Длина, вес и объём конвертируются простым умножением. Температура — нет. У температурных шкал разные нули, поэтому конвертация требует и умножения, и сложения. Попробуйте сами с нашим конвертером температуры.
Формулы температуры
Четыре температурные шкалы и их связи:
Цельсий ↔ Фаренгейт:
°F = °C × 9/5 + 32
°C = (°F − 32) × 5/9
Откуда 9/5? Вода замерзает на 0°C (32°F) и кипит на 100°C (212°F). Диапазон Фаренгейта 212 − 32 = 180 градусов. Диапазон Цельсия 100 градусов. 180/100 = 9/5.
Цельсий ↔ Кельвин:
K = °C + 273,15
°C = K − 273,15
Кельвин использует тот же размер градуса, что Цельсий, но стартует от абсолютного нуля (−273,15°C). Отрицательных значений Кельвина нет.
Фаренгейт ↔ Ранкин:
°R = °F + 459,67
Ранкин для Фаренгейта — то же, что Кельвин для Цельсия: тот же размер градуса, но от абсолютного нуля. Применяется в основном в американской инженерной термодинамике.
Любопытный факт: −40° — точка пересечения Цельсия и Фаренгейта. −40°C = −40°F точно.
Глубокое погружение: Формулы конвертации температуры, код на 5 языках и ловушки weather API — там это разобрано подробно.
Конвертация температуры в коде
JavaScript:
const tempConvert = {
cToF: (c) => c * 9 / 5 + 32,
fToC: (f) => (f - 32) * 5 / 9,
cToK: (c) => c + 273.15,
kToC: (k) => k - 273.15,
fToK: (f) => (f - 32) * 5 / 9 + 273.15,
kToF: (k) => (k - 273.15) * 9 / 5 + 32,
};
console.log(tempConvert.cToF(100)); // 212 (boiling water)
console.log(tempConvert.fToC(98.6)); // 37 (body temperature)
console.log(tempConvert.cToK(0)); // 273.15 (freezing point)
Python:
def c_to_f(c: float) -> float:
return c * 9 / 5 + 32
def f_to_c(f: float) -> float:
return (f - 32) * 5 / 9
def c_to_k(c: float) -> float:
return c + 273.15
print(c_to_f(100)) # 212.0
print(f_to_c(98.6)) # 37.0
print(c_to_k(-273.15)) # 0.0 (absolute zero)
Устный приём для температуры
Грубая оценка Цельсий → Фаренгейт: удвоить и прибавить 30. Хорошо работает в диапазоне 0–30°C:
- 20°C → 40 + 30 = 70°F (точно: 68°F)
- 30°C → 60 + 30 = 90°F (точно: 86°F)
Ошибка растёт на крайностях, но для погоды и кулинарии достаточно.
Ключевые ориентиры температуры
| Событие | °C | °F | K |
|---|---|---|---|
| Абсолютный ноль | −273,15 | −459,67 | 0 |
| Замерзание воды | 0 | 32 | 273,15 |
| Комнатная температура | 20–22 | 68–72 | 293–295 |
| Тело человека | 37 | 98,6 | 310,15 |
| Кипение воды | 100 | 212 | 373,15 |
| Духовка (умеренная) | 180 | 356 | 453,15 |
Конвертация объёма и жидкости: формулы и код
У объёма уникальная ловушка: US-галлон и имперский галлон не одного размера. Конвертируйте между 15 единицами объёма с нашим конвертером объёма.
Ключевые коэффициенты объёма
| Конверсия | Коэффициент |
|---|---|
| liters → US gallons | / 3,78541 |
| liters → Imperial gallons | / 4,54609 |
| US cups → milliliters | × 236,588 |
| US fluid ounces → milliliters | × 29,5735 |
| US tablespoons → milliliters | × 14,787 |
| US teaspoons → milliliters | × 4,929 |
Ловушка US vs Imperial галлона
Это спотыкает чаще, чем ожидаете:
| Единица | US Customary | Imperial (UK) | Разница |
|---|---|---|---|
| 1 gallon | 3,785 L | 4,546 L | 20,1% |
| 1 fluid ounce | 29,57 mL | 28,41 mL | 3,9% |
| 1 pint | 473,2 mL | 568,3 mL | 20,1% |
US-галлон происходит от английского винного галлона 1707 года. Имперский галлон был переопределён в 1824 году как объём 10 фунтов воды при 62°F. Результат: имперский галлон примерно на пятую часть больше.
Это важно в реальных сценариях. Если британский авторевью котирует расход топлива в милях на галлон, это имперские галлоны. Прямое сравнение с US-mpg без конверсии — и британский автомобиль выглядит на 20% эффективнее, чем относительно US-меры.
Конвертация объёма в коде
JavaScript:
const volumeConvert = {
litersToUSGal: (l) => l / 3.78541,
usGalToLiters: (gal) => gal * 3.78541,
cupsToMl: (cups) => cups * 236.588,
mlToCups: (ml) => ml / 236.588,
flOzToMl: (floz) => floz * 29.5735,
mlToFlOz: (ml) => ml / 29.5735,
};
console.log(volumeConvert.litersToUSGal(3.78541)); // 1 (exact)
console.log(volumeConvert.cupsToMl(2)); // 473.176
console.log(volumeConvert.flOzToMl(12)); // 354.882
Python:
def liters_to_us_gal(liters: float) -> float:
return liters / 3.78541
def cups_to_ml(cups: float) -> float:
return cups * 236.588
def fl_oz_to_ml(fl_oz: float) -> float:
return fl_oz * 29.5735
print(liters_to_us_gal(3.78541)) # ~1.0
print(cups_to_ml(2)) # 473.176
Универсальный конвертер на JavaScript
Если нужен конвертер в собственном проекте, вот компактная реализация. Трюк: определите для каждой единицы её отношение к базовой, и затем конвертируйте через базовую.
const units = {
// Length (base: meter)
m: { base: 'm', factor: 1 },
km: { base: 'm', factor: 1000 },
cm: { base: 'm', factor: 0.01 },
mm: { base: 'm', factor: 0.001 },
in: { base: 'm', factor: 0.0254 },
ft: { base: 'm', factor: 0.3048 },
yd: { base: 'm', factor: 0.9144 },
mi: { base: 'm', factor: 1609.344 },
// Weight (base: gram)
g: { base: 'g', factor: 1 },
kg: { base: 'g', factor: 1000 },
mg: { base: 'g', factor: 0.001 },
lb: { base: 'g', factor: 453.592 },
oz: { base: 'g', factor: 28.3495 },
// Volume (base: milliliter)
ml: { base: 'ml', factor: 1 },
l: { base: 'ml', factor: 1000 },
usgal: { base: 'ml', factor: 3785.41 },
uscup: { base: 'ml', factor: 236.588 },
floz: { base: 'ml', factor: 29.5735 },
};
function convert(value, fromUnit, toUnit) {
const from = units[fromUnit];
const to = units[toUnit];
if (!from || !to || from.base !== to.base) {
throw new Error(`Cannot convert ${fromUnit} to ${toUnit}`);
}
return value * from.factor / to.factor;
}
// Temperature needs special handling (offset-based)
function convertTemp(value, from, to) {
// Normalize to Celsius first
let c;
if (from === 'C') c = value;
else if (from === 'F') c = (value - 32) * 5 / 9;
else if (from === 'K') c = value - 273.15;
else throw new Error(`Unknown unit: ${from}`);
// Convert from Celsius to target
if (to === 'C') return c;
if (to === 'F') return c * 9 / 5 + 32;
if (to === 'K') return c + 273.15;
throw new Error(`Unknown unit: ${to}`);
}
console.log(convert(26.2, 'mi', 'km')); // 42.164928
console.log(convert(70, 'kg', 'lb')); // 154.324...
console.log(convert(2, 'uscup', 'ml')); // 473.176
console.log(convertTemp(100, 'C', 'F')); // 212
Функция convert обрабатывает любую единицу, чьё отношение к базовой — простое отношение. Температура получает отдельную функцию из-за смещения. Можно расширять units любой новой единицей — просто укажите её базовый тип и коэффициент.
FAQ
Сколько сантиметров в дюйме?
Ровно 2,54 cm. Это не приближение — точный коэффициент по Международному соглашению о ярде и фунте 1959 года. Для перевода дюймов в сантиметры умножайте на 2,54. В обратную сторону — делите на 2,54. Переводите длины мгновенно с нашим бесплатным инструментом.
Какая формула перевода Цельсия в Фаренгейт?
°F = °C × 9/5 + 32. Например, 20°C = 20 × 1,8 + 32 = 68°F. Отношение 9/5 берётся из 180-градусного диапазона Фаренгейта (32°F – 212°F), делённого на 100-градусный диапазон Цельсия (0°C – 100°C). Проверьте точный результат в нашем температурном инструменте.
Почему US и имперский галлон различаются?
US-галлон (3,785 L) происходит от английского винного галлона 1707 года, а имперский галлон (4,546 L) переопределён в 1824 году по объёму 10 фунтов дистиллированной воды. Эта разница примерно в 20% важна для сравнений расхода топлива, масштабирования рецептов и международной отгрузки.
Сколько фунтов в килограмме?
1 kg = 2,20462 lbs. Для устного счёта: удвойте значение в kg и добавьте 10%. То есть 70 kg → 140 + 14 = 154 lbs. Точный ответ — 154,32 lbs.
Что такое абсолютный ноль?
0 K = −273,15°C = −459,67°F. Это теоретическая нижняя температура, при которой всё тепловое движение молекул прекращается. Ни одна лаборатория не достигла ровно 0 K, хотя эксперименты подходили в пределах миллиардных доли градуса.
Тройская унция — то же, что обычная унция?
Нет. Тройская унция (31,1035 g) примерно на 10% тяжелее стандартной avoirdupois-унции (28,3495 g). Тройские унции применяются исключительно для драгметаллов — золота, серебра, платины. Если видите цену золота «за унцию», всегда имеется в виду тройская.
Какой самый простой способ перевести мили в километры в уме?
Используйте последовательность Фибоначчи. Соседние числа Фибоначчи приближают отношение 1:1,609 между милями и километрами: 5 mi ≈ 8 km, 8 mi ≈ 13 km, 13 mi ≈ 21 km. Для произвольных значений — просто умножайте мили на 1,6.
Заключение
Четыре вещи на память:
- Метрика десятична. Перемещение между метрическими единицами — сдвиг запятой. Запоминать ничего.
- Имперская требует памяти. 12 дюймов в футе, 3 фута в ярде, 5280 футов в миле — закономерности нет.
- У температуры есть смещение. В отличие от других конвертаций, простым умножением не обойтись. Применяйте формулу: °F = °C × 9/5 + 32.
- US ≠ Imperial для жидкостей. US-галлон и имперский галлон различаются на 20%. Всегда уточняйте, с каким именно работаете.
Нужно перевести что-то прямо сейчас? Используйте наши бесплатные браузерные инструменты — ни регистрации, ни данных за пределами вашего устройства:
- Конвертер длины — 16 единиц, метрика к имперской и обратно
- Конвертер веса — kg, lbs, oz, stone, тройские унции
- Конвертер температуры — Цельсий, Фаренгейт, Кельвин, Ранкин
- Конвертер объёма — литры, галлоны, чашки, fluid ounce