summaryrefslogtreecommitdiff
path: root/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
diff options
context:
space:
mode:
Diffstat (limited to 'taler-kotlin-android/src/main/java/net/taler/common/Amount.kt')
-rw-r--r--taler-kotlin-android/src/main/java/net/taler/common/Amount.kt11
1 files changed, 11 insertions, 0 deletions
diff --git a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
index a36c0ab..18fb6cb 100644
--- a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
+++ b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
@@ -56,12 +56,19 @@ public data class Amount(
public companion object {
private const val FRACTIONAL_BASE: Int = 100000000 // 1e8
+ public val SEGWIT_MIN = Amount("BTC", 0, 294)
private val REGEX_CURRENCY = Regex("""^[-_*A-Za-z0-9]{1,12}$""")
public val MAX_VALUE: Long = 2.0.pow(52).toLong()
private const val MAX_FRACTION_LENGTH = 8
public const val MAX_FRACTION: Int = 99_999_999
+ public fun fromDouble(currency: String, value: Double): Amount {
+ val intPart = Math.floor(value).toLong()
+ val fraPart = Math.floor((value - intPart) * FRACTIONAL_BASE).toInt()
+ return Amount(currency, intPart, fraPart)
+ }
+
public fun zero(currency: String): Amount {
return Amount(checkCurrency(currency), 0, 0)
}
@@ -141,6 +148,10 @@ public data class Amount(
return result
}
+ public fun withCurrency(currency: String): Amount {
+ return Amount(checkCurrency(currency), this.value, this.fraction)
+ }
+
public operator fun minus(other: Amount): Amount {
check(currency == other.currency) { "Can only subtract from same currency" }
var resultValue = value