Add Temperature Conversion Utility (#7066)

- Implements conversions between Celsius, Fahrenheit, and Kelvin
- Includes all 6 conversion methods
- Adds comprehensive unit tests with edge cases
- Fixes #6936
This commit is contained in:
Krishna
2025-11-15 14:52:36 +05:30
committed by GitHub
parent a008cc2b08
commit 8a339ef2e2
2 changed files with 100 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
package com.thealgorithms.conversions;
/**
* A utility class to convert between different temperature units.
*
* <p>This class supports conversions between the following units:
* <ul>
* <li>Celsius</li>
* <li>Fahrenheit</li>
* <li>Kelvin</li>
* </ul>
*
* <p>This class is final and cannot be instantiated.
*
* @author krishna-medapati (https://github.com/krishna-medapati)
* @see <a href="https://en.wikipedia.org/wiki/Conversion_of_scales_of_temperature">Wikipedia: Temperature Conversion</a>
*/
public final class TemperatureConverter {
private TemperatureConverter() {
}
public static double celsiusToFahrenheit(double celsius) {
return celsius * 9.0 / 5.0 + 32.0;
}
public static double celsiusToKelvin(double celsius) {
return celsius + 273.15;
}
public static double fahrenheitToCelsius(double fahrenheit) {
return (fahrenheit - 32.0) * 5.0 / 9.0;
}
public static double fahrenheitToKelvin(double fahrenheit) {
return (fahrenheit - 32.0) * 5.0 / 9.0 + 273.15;
}
public static double kelvinToCelsius(double kelvin) {
return kelvin - 273.15;
}
public static double kelvinToFahrenheit(double kelvin) {
return (kelvin - 273.15) * 9.0 / 5.0 + 32.0;
}
}

View File

@@ -0,0 +1,54 @@
package com.thealgorithms.conversions;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class TemperatureConverterTest {
private static final double DELTA = 0.01;
@Test
void testCelsiusToFahrenheit() {
assertEquals(32.0, TemperatureConverter.celsiusToFahrenheit(0.0), DELTA);
assertEquals(212.0, TemperatureConverter.celsiusToFahrenheit(100.0), DELTA);
assertEquals(-40.0, TemperatureConverter.celsiusToFahrenheit(-40.0), DELTA);
assertEquals(98.6, TemperatureConverter.celsiusToFahrenheit(37.0), DELTA);
}
@Test
void testCelsiusToKelvin() {
assertEquals(273.15, TemperatureConverter.celsiusToKelvin(0.0), DELTA);
assertEquals(373.15, TemperatureConverter.celsiusToKelvin(100.0), DELTA);
assertEquals(233.15, TemperatureConverter.celsiusToKelvin(-40.0), DELTA);
}
@Test
void testFahrenheitToCelsius() {
assertEquals(0.0, TemperatureConverter.fahrenheitToCelsius(32.0), DELTA);
assertEquals(100.0, TemperatureConverter.fahrenheitToCelsius(212.0), DELTA);
assertEquals(-40.0, TemperatureConverter.fahrenheitToCelsius(-40.0), DELTA);
assertEquals(37.0, TemperatureConverter.fahrenheitToCelsius(98.6), DELTA);
}
@Test
void testFahrenheitToKelvin() {
assertEquals(273.15, TemperatureConverter.fahrenheitToKelvin(32.0), DELTA);
assertEquals(373.15, TemperatureConverter.fahrenheitToKelvin(212.0), DELTA);
assertEquals(233.15, TemperatureConverter.fahrenheitToKelvin(-40.0), DELTA);
}
@Test
void testKelvinToCelsius() {
assertEquals(0.0, TemperatureConverter.kelvinToCelsius(273.15), DELTA);
assertEquals(100.0, TemperatureConverter.kelvinToCelsius(373.15), DELTA);
assertEquals(-273.15, TemperatureConverter.kelvinToCelsius(0.0), DELTA);
}
@Test
void testKelvinToFahrenheit() {
assertEquals(32.0, TemperatureConverter.kelvinToFahrenheit(273.15), DELTA);
assertEquals(212.0, TemperatureConverter.kelvinToFahrenheit(373.15), DELTA);
assertEquals(-40.0, TemperatureConverter.kelvinToFahrenheit(233.15), DELTA);
}
}