26 lines
637 B
Kotlin
26 lines
637 B
Kotlin
package cash.z.ecc.android.sdk.demoapp.model
|
|
|
|
/**
|
|
* @param decimal A percent represented as a `Double` decimal value in the range of [0, 1].
|
|
*/
|
|
@JvmInline
|
|
value class PercentDecimal(val decimal: Float) {
|
|
init {
|
|
require(decimal >= MIN)
|
|
require(decimal <= MAX)
|
|
}
|
|
|
|
companion object {
|
|
const val MIN = 0.0f
|
|
const val MAX = 1.0f
|
|
val ZERO_PERCENT = PercentDecimal(MIN)
|
|
val ONE_HUNDRED_PERCENT = PercentDecimal(MAX)
|
|
|
|
fun newLenient(decimal: Float) = PercentDecimal(
|
|
decimal
|
|
.coerceAtLeast(MIN)
|
|
.coerceAtMost(MAX)
|
|
)
|
|
}
|
|
}
|