Untitled

 avatar
unknown
plain_text
2 years ago
1.4 kB
3
Indexable
export const convertCelsiusToFahrenheit = (celsius: number) => {
  return (celsius / 5) * 9 + 32;
};

export const convertFahrenheitToCelsius = (fahrenheit: number) => {
  const celsius = ((fahrenheit - 32) / 9) * 5;
  const isInteger = celsius % 1 === 0;

  return isInteger ? celsius : Number(celsius.toFixed(2));
};

export const convertCelsiusToKelvin = (celsius: number) => {
  return celsius + 273.15;
};

export const convertKelvinToCelsius = (kelvin: number) => {
  const celsius = kelvin - 273.15;
  const isInteger = celsius % 1 === 0;

  return isInteger ? celsius : Number(celsius.toFixed(5));
};

export enum ThermometricUnit {
  Celsius = "celsius",
  Fahrenheit = "fahrenheit",
  Kelvin = "kelvin",
}

export const calculateTemperatures = (
  unit: ThermometricUnit,
  value: number
) => {
  switch (unit) {
    case ThermometricUnit.Celsius:
      return {
        celsius: value,
        fahrenheit: convertCelsiusToFahrenheit(value),
        kelvin: convertCelsiusToKelvin(value),
      };
    case ThermometricUnit.Fahrenheit:
      return {
        celsius: convertFahrenheitToCelsius(value),
        fahrenheit: value,
        kelvin: convertCelsiusToKelvin(convertFahrenheitToCelsius(value)),
      };
    case ThermometricUnit.Kelvin:
      return {
        celsius: convertKelvinToCelsius(value),
        fahrenheit: convertCelsiusToFahrenheit(convertKelvinToCelsius(value)),
        kelvin: value,
      };
  }
};