Перевод температур: Цельсий ↔ Фаренгейт

Зачем понимать преобразования температур
Понимание перевода между шкалами полезно, если вы работаете с международными данными, настраиваете климат-контроль, пишете приложения с погодой или просто путешествуете. Формулы небольшие, но при программировании важно учитывать типы чисел и точность при округлении.
Основные формулы
- Перевод из Цельсия в Фаренгейт:
T(°F) = T(°C) × 9/5 + 32- Перевод из Фаренгейта в Цельсий:
T(°C) = (T(°F) - 32) × 5/9Короткая памятка: умножить на 1.8 и прибавить 32 — туда; вычесть 32 и умножить на 0.555… — обратно.
Пояснение на пальцах (эвристика)
- Ноль градусов Цельсия — это 32°F (точка замерзания воды).
- 100°C = 212°F (точка кипения воды при нормальном давлении).
- Приблизительная быстрая оценка: 20°C ≈ 68°F (удобная опорная точка).
Важно: для прикладных задач используйте вещественные типы (float/double) и контролируйте округление.
Примеры и программы
C++: Цельсий → Фаренгейт
// C++: перевод температуры из Цельсия в Фаренгейт
#include
using namespace std;
// Функция перевода из Цельсия в Фаренгейт
float celsiusToFahrenheit(float num)
{
return ((num * 9.0f / 5.0f) + 32.0f);
}
int main()
{
float num1 = 100.0f;
cout << "Температура в Цельсиях: " << num1 << endl;
cout << "Температура в Фаренгейтах: " << celsiusToFahrenheit(num1) << endl;
float num2 = 0.0f;
cout << "Температура в Цельсиях: " << num2 << endl;
cout << "Температура в Фаренгейтах: " << celsiusToFahrenheit(num2) << endl;
float num3 = 65.0f;
cout << "Температура в Цельсиях: " << num3 << endl;
cout << "Температура в Фаренгейтах: " << celsiusToFahrenheit(num3) << endl;
float num4 = 150.0f;
cout << "Температура в Цельсиях: " << num4 << endl;
cout << "Температура в Фаренгейтах: " << celsiusToFahrenheit(num4) << endl;
float num5 = 20.0f;
cout << "Температура в Цельсиях: " << num5 << endl;
cout << "Температура в Фаренгейтах: " << celsiusToFahrenheit(num5) << endl;
return 0;
} Вывод программы (пример):
Температура в Цельсиях: 100
Температура в Фаренгейтах: 212
Температура в Цельсиях: 0
Температура в Фаренгейтах: 32
Температура в Цельсиях: 65
Температура в Фаренгейтах: 149
Температура в Цельсиях: 150
Температура в Фаренгейтах: 302
Температура в Цельсиях: 20
Температура в Фаренгейтах: 68Python: Цельсий → Фаренгейт
# Python: перевод из Цельсия в Фаренгейт
def celsius_to_fahrenheit(num):
return (num * 9.0 / 5.0) + 32.0
num1 = 100.0
print("Температура в Цельсиях:", num1)
print("Температура в Фаренгейтах:", celsius_to_fahrenheit(num1))
num2 = 0
print("Температура в Цельсиях:", num2)
print("Температура в Фаренгейтах:", celsius_to_fahrenheit(num2))
num3 = 65.0
print("Температура в Цельсиях:", num3)
print("Температура в Фаренгейтах:", celsius_to_fahrenheit(num3))
num4 = 150.0
print("Температура в Цельсиях:", num4)
print("Температура в Фаренгейтах:", celsius_to_fahrenheit(num4))
num5 = 20.0
print("Температура в Цельсиях:", num5)
print("Температура в Фаренгейтах:", celsius_to_fahrenheit(num5))Пример вывода:
Температура в Цельсиях: 100.0
Температура в Фаренгейтах: 212.0
Температура в Цельсиях: 0
Температура в Фаренгейтах: 32.0
Температура в Цельсиях: 65.0
Температура в Фаренгейтах: 149.0
Температура в Цельсиях: 150.0
Температура в Фаренгейтах: 302.0
Температура в Цельсиях: 20.0
Температура в Фаренгейтах: 68.0JavaScript: Цельсий → Фаренгейт
// JavaScript: перевод из Цельсия в Фаренгейт
function celsiusToFahrenheit(num) {
return (num * 9.0 / 5.0) + 32.0;
}
var num1 = 100.0;
document.write("Температура в Цельсиях: " + num1 + "
");
document.write("Температура в Фаренгейтах: " + celsiusToFahrenheit(num1) + "
");
var num2 = 0;
document.write("Температура в Цельсиях: " + num2 + "
");
document.write("Температура в Фаренгейтах: " + celsiusToFahrenheit(num2) + "
");
var num3 = 65.0;
document.write("Температура в Цельсиях: " + num3 + "
");
document.write("Температура в Фаренгейтах: " + celsiusToFahrenheit(num3) + "
");
var num4 = 150.0;
document.write("Температура в Цельсиях: " + num4 + "
");
document.write("Температура в Фаренгейтах: " + celsiusToFahrenheit(num4) + "
");
var num5 = 20.0;
document.write("Температура в Цельсиях: " + num5 + "
");
document.write("Температура в Фаренгейтах: " + celsiusToFahrenheit(num5) + "
");Вывод (на странице):
Температура в Цельсиях: 100
Температура в Фаренгейтах: 212
Температура в Цельсиях: 0
Температура в Фаренгейтах: 32
Температура в Цельсиях: 65
Температура в Фаренгейтах: 149
Температура в Цельсиях: 150
Температура в Фаренгейтах: 302
Температура в Цельсиях: 20
Температура в Фаренгейтах: 68Перевод Фаренгейт → Цельсий: примеры кода
Формула
T(°C) = (T(°F) - 32) × 5/9C++: Фаренгейт → Цельсий
// C++: перевод температуры из Фаренгейта в Цельсий
#include
using namespace std;
float fahrenheitToCelsius(float num)
{
return ((num - 32.0f) * 5.0f / 9.0f);
}
int main()
{
float num1 = 212.0f;
cout << "Температура в Фаренгейтах: " << num1 << endl;
cout << "Температура в Цельсиях: " << fahrenheitToCelsius(num1) << endl;
float num2 = 32.0f;
cout << "Температура в Фаренгейтах: " << num2 << endl;
cout << "Температура в Цельсиях: " << fahrenheitToCelsius(num2) << endl;
float num3 = 149.0f;
cout << "Температура в Фаренгейтах: " << num3 << endl;
cout << "Температура в Цельсиях: " << fahrenheitToCelsius(num3) << endl;
float num4 = 302.0f;
cout << "Температура в Фаренгейтах: " << num4 << endl;
cout << "Температура в Цельсиях: " << fahrenheitToCelsius(num4) << endl;
float num5 = 68.0f;
cout << "Температура в Фаренгейтах: " << num5 << endl;
cout << "Температура в Цельсиях: " << fahrenheitToCelsius(num5) << endl;
return 0;
} Пример вывода:
Температура в Фаренгейтах: 212
Температура в Цельсиях: 100
Температура в Фаренгейтах: 32
Температура в Цельсиях: 0
Температура в Фаренгейтах: 149
Температура в Цельсиях: 65
Температура в Фаренгейтах: 302
Температура в Цельсиях: 150
Температура в Фаренгейтах: 68
Температура в Цельсиях: 20Python и JavaScript: обратный перевод
Аналогично, в Python и JavaScript функция будет вычислять (num - 32) * 5/9. Обратите внимание на типы: в JavaScript числа по умолчанию float-like, а в Python при делении в явном виде используйте 5.0/9.0 для точности в старых версиях.
Контрольные точки и факты
- Точка замерзания воды: 0 °C = 32 °F
- Точка кипения воды (при 1 атм): 100 °C = 212 °F
- Комфортная комнатная температура: ≈20–22 °C ≈ 68–72 °F
Когда простая формула не подходит
Важно: при работе в научных и инженерных расчётах учитывайте:
- Необходимость высокой точности — используйте double и стандартизированные библиотеки округления.
- Датчики и API могут давать данные с локальной калибровкой или шумом — применяйте фильтрацию и калибровку.
- При пакетной обработке больших объёмов данных следите за производительностью и векторизацией.
Тестовые случаи и критерии приёмки
Критерии приёмки (минимум):
- Функция корректно переводит 0 °C ↔ 32 °F и 100 °C ↔ 212 °F.
- Для входов с десятичными дробями возвращается ожидаемая точность (заданное количество знаков).
- Граничные и экстремальные значения (очень низкие и очень высокие температуры) корректно обрабатываются без переполнения.
Примеры тестов:
- Вход: 0 °C → ожидаемый выход: 32 °F
- Вход: 100 °C → ожидаемый выход: 212 °F
- Вход: 68 °F → ожидаемый выход: 20 °C
- Произвольный: 37 °C → ожидаемый выход: 98.6 °F (примерный)
Шаблонный чек-лист для разработчика
- Выбраны корректные типы данных (float/double)
- Написаны модульные тесты для контрольных точек
- Обработаны локали и формат вывода (запятая/точка)
- Документированы допущения по точности и округлению
Ментальные модели и решение задач
- Если нужно быстро прикинуть температуру для общения, используйте эвристику: ×2 − 30 (приблизительно): (°C × 2) + 30 ≈ °F. Она даёт грубую оценку, но не точную.
- Для точных вычислений всегда используйте формулу с 9/5 или 5/9.
Заключение
Теперь вы знаете обе формулы и видели рабочие примеры на трёх языках. При разработке помните про точность, тесты и локализацию строк для пользователя.
Важно: при использовании в продуктах с международной аудиторией предоставьте пользователю явный выбор шкалы температур.
Краткое резюме в одну строку: умножьте на 1.8 и прибавьте 32 — в Фаренгейт; вычтите 32 и умножьте на 5/9 — в Цельсий.
1-строчный глоссарий:
- Цельсий — шкала температуры с нулём при замерзании воды.
- Фаренгейт — шкала, распространённая в США, с 32° при замерзании воды.