Physikal is a Kotlin units of measurement, physical computing, and dimension analysis library. Currently just extensions for Java units of measurement but we are planning for a Kotlin multiplatform rewrite.
|Core||SI Units||Complete Units|
val small = 10.metre val large = 10.kilo.metre
Includes all operators
val added = 10.metre + 1.kilo.metre >> 1010.0 m val speed = added/10.minute >> 101 m/min var aFewSeconds = 5.second aFewSeconds++ >> 6.0 s 10.peta.watt > 2.watt >> true 5.gram <= 20.kilo.gram >> true (-10.nano.metre).abs() >> 10.0 nm ## The operator '==' does not always work reliably for quantities; ## the function qeq() should be used instead. 1.kilo.gram == 1000.gram >> false 1.kilo.gram qeq 1000.gram >> true
Using different units (SI units & other units)
5.gram + 2.pound >> 912.18474 g (13.kilo.gram + 20.pound) convertTo STONE >> 3.47572100600243466674378 st
Currently all quantities are reference types, so heavy usage of this library will involve some level of extraneous allocation and GC. Hopefully we can resolve this issue when / if Kotlin inline classes are expanded to support multiple properties.