mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
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:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user