diff options
author | Sebastian <sebasjm@gmail.com> | 2022-06-15 14:53:39 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-06-15 14:53:48 -0300 |
commit | 5b7bb5cf012fc41b2fbb6a41f6f858009c1ba092 (patch) | |
tree | d28fedbe31363f9c72fca31626d2104d4d375af6 /taler-kotlin-android/src/main/java/net/taler/common/Amount.kt | |
parent | 627fff034a85c6076c8d1693af33c38fa4a99825 (diff) | |
download | taler-android-5b7bb5cf012fc41b2fbb6a41f6f858009c1ba092.tar.gz taler-android-5b7bb5cf012fc41b2fbb6a41f6f858009c1ba092.tar.bz2 taler-android-5b7bb5cf012fc41b2fbb6a41f6f858009c1ba092.zip |
accept decimal and bitcoin exchanges
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.kt | 11 |
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 |