Skip to content

Commit 4e79550

Browse files
committed
Make unit conversions more accurate and rename temperature units
Signed-off-by: Kyle Corry <[email protected]>
1 parent 639b718 commit 4e79550

File tree

17 files changed

+100
-70
lines changed

17 files changed

+100
-70
lines changed

src/main/kotlin/com/kylecorry/sol/units/Distance.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ value class Distance private constructor(private val measure: Measure) : Compara
1212
fun convertTo(newUnits: DistanceUnits): Distance {
1313
val m = value * units.meters
1414
val newDistance = m / newUnits.meters
15-
return from(newDistance, newUnits)
15+
return from(newDistance.toFloat(), newUnits)
1616
}
1717

1818
fun meters(): Distance {
@@ -23,6 +23,10 @@ value class Distance private constructor(private val measure: Measure) : Compara
2323
return from(multiplier * multiplier, units)
2424
}
2525

26+
override fun toString(): String {
27+
return "$value $units"
28+
}
29+
2630
companion object {
2731

2832
fun meters(distance: Float): Distance {
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.kylecorry.sol.units
22

3-
enum class DistanceUnits(val id: Int, val meters: Float, val isMetric: Boolean) {
4-
Centimeters(1, 0.01f, true),
5-
Inches(2, 1 / (3.28084f * 12f), false),
6-
Miles(3, 5280f / 3.28084f, false),
7-
Yards(4, 0.9144f, false),
8-
Feet(5, 1 / 3.28084f, false),
9-
Kilometers(6, 1000f, true),
10-
Meters(7, 1f, true),
11-
NauticalMiles(8, 1852f, false),
12-
Millimeters(9, 0.001f, true),
13-
Caliber(10, 0.0254f, false),
3+
enum class DistanceUnits(val id: Int, val meters: Double, val isMetric: Boolean) {
4+
Centimeters(1, 0.01, true),
5+
Inches(2, 1 / (3.28084 * 12), false),
6+
Miles(3, 5280 / 3.28084, false),
7+
Yards(4, 0.9144, false),
8+
Feet(5, 1 / 3.28084, false),
9+
Kilometers(6, 1000.0, true),
10+
Meters(7, 1.0, true),
11+
NauticalMiles(8, 1852.0, false),
12+
Millimeters(9, 0.001, true),
13+
Caliber(10, 0.0254, false),
1414
}

src/main/kotlin/com/kylecorry/sol/units/Energy.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ value class Energy private constructor(private val measure: Measure) {
1313
return this
1414
}
1515
val joules = value * units.joules
16-
return from(joules / newUnits.joules, newUnits)
16+
return from((joules / newUnits.joules).toFloat(), newUnits)
17+
}
18+
19+
override fun toString(): String {
20+
return "$value $units"
1721
}
1822

1923
fun joules(): Energy {
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.kylecorry.sol.units
22

3-
enum class EnergyUnits(val id: Int, val joules: Float, val isMetric: Boolean) {
4-
Joules(1, 1f, true),
5-
FootPounds(2, 1.355818f, false),
3+
enum class EnergyUnits(val id: Int, val joules: Double, val isMetric: Boolean) {
4+
Joules(1, 1.0, true),
5+
FootPounds(2, 1.355818, false),
66
}

src/main/kotlin/com/kylecorry/sol/units/Pressure.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ value class Pressure private constructor(private val measure: Measure) : Compara
1414
}
1515
val hpa = value * units.hpa
1616
val newPressure = hpa / toUnits.hpa
17-
return from(newPressure, toUnits)
17+
return from(newPressure.toFloat(), toUnits)
1818
}
1919

2020
fun hpa(): Pressure {
2121
return convertTo(PressureUnits.Hpa)
2222
}
2323

24+
override fun toString(): String {
25+
return "$value $units"
26+
}
27+
2428
override fun compareTo(other: Pressure): Int {
2529
val hpa = hpa().value
2630
val otherHpa = other.hpa().value
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.kylecorry.sol.units
22

3-
enum class PressureUnits(val id: Int, val hpa: Float) {
4-
Hpa(1, 1f),
5-
Mbar(2, 1f),
6-
Inhg(3, 1 / 0.02953f),
7-
Psi(4, 1 / 0.014503774f),
8-
MmHg(5, 1.3332239f)
3+
enum class PressureUnits(val id: Int, val hpa: Double) {
4+
Hpa(1, 1.0),
5+
Mbar(2, 1.0),
6+
Inhg(3, 1 / 0.02953),
7+
Psi(4, 1 / 0.014503774),
8+
MmHg(5, 1.3332239)
99
}

src/main/kotlin/com/kylecorry/sol/units/Speed.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ value class Speed private constructor(private val measure: Measure) {
1212
fun convertTo(newDistanceUnits: DistanceUnits, newTimeUnits: TimeUnits): Speed {
1313
val distance = Distance.from(speed, distanceUnits).convertTo(newDistanceUnits).value
1414
val newSpeed = (distance / timeUnits.seconds) * newTimeUnits.seconds
15-
return from(newSpeed, newDistanceUnits, newTimeUnits)
15+
return from(newSpeed.toFloat(), newDistanceUnits, newTimeUnits)
16+
}
17+
18+
override fun toString(): String {
19+
return "$speed $distanceUnits / $timeUnits"
1620
}
1721

1822
companion object {

src/main/kotlin/com/kylecorry/sol/units/Temperature.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,24 @@ value class Temperature private constructor(private val measure: Measure) : Comp
1414
}
1515

1616
val c = when (units) {
17-
TemperatureUnits.C -> value
18-
TemperatureUnits.F -> (value - 32) * 5 / 9
17+
TemperatureUnits.Celsius -> value.toDouble()
18+
TemperatureUnits.Fahrenheit -> (value - 32) * 5 / 9.0
1919
}
2020

2121
val newTemp = when (toUnits) {
22-
TemperatureUnits.C -> c
23-
TemperatureUnits.F -> (c * 9 / 5) + 32
22+
TemperatureUnits.Celsius -> c
23+
TemperatureUnits.Fahrenheit -> (c * 9 / 5.0) + 32
2424
}
2525

26-
return from(newTemp, toUnits)
26+
return from(newTemp.toFloat(), toUnits)
2727
}
2828

2929
fun celsius(): Temperature {
30-
return convertTo(TemperatureUnits.C)
30+
return convertTo(TemperatureUnits.Celsius)
31+
}
32+
33+
override fun toString(): String {
34+
return "$value $units"
3135
}
3236

3337
override fun compareTo(other: Temperature): Int {
@@ -42,11 +46,11 @@ value class Temperature private constructor(private val measure: Measure) : Comp
4246
}
4347

4448
fun celsius(temperature: Float): Temperature {
45-
return from(temperature, TemperatureUnits.C)
49+
return from(temperature, TemperatureUnits.Celsius)
4650
}
4751

4852
fun fahrenheit(temperature: Float): Temperature {
49-
return from(temperature, TemperatureUnits.F)
53+
return from(temperature, TemperatureUnits.Fahrenheit)
5054
}
5155
}
5256
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.kylecorry.sol.units
22

33
enum class TemperatureUnits(val id: Int) {
4-
F(1), C(2)
4+
Fahrenheit(1),
5+
Celsius(2)
56
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.kylecorry.sol.units
22

3-
enum class TimeUnits(val id: Int, val seconds: Float) {
4-
Milliseconds(1, 1 / 1000f),
5-
Seconds(2, 1f),
6-
Minutes(3, 60f),
7-
Hours(4, 3600f),
8-
Days(5, 86400f)
3+
enum class TimeUnits(val id: Int, val seconds: Double) {
4+
Milliseconds(1, 1 / 1000.0),
5+
Seconds(2, 1.0),
6+
Minutes(3, 60.0),
7+
Hours(4, 3600.0),
8+
Days(5, 86400.0)
99
}

0 commit comments

Comments
 (0)