taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 4d6934bfd34c917b5f9d3c1fc7424999f3de184a
parent b6575a3beced72c6d4dc474708186940d4a468d7
Author: Marc Stibane <marc@taler.net>
Date:   Mon, 13 Nov 2023 20:46:37 +0100

Bugfix

Diffstat:
Mtaler-swift/Sources/taler-swift/Amount.swift | 29++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/taler-swift/Sources/taler-swift/Amount.swift b/taler-swift/Sources/taler-swift/Amount.swift @@ -140,15 +140,34 @@ public final class Amount: Codable, Hashable, @unchecked Sendable, CustomStringC /// The string representation of the value, formatted as "`integer``fraction`", /// no group separator, no decimalSeparator, #inputDigits digits from fraction, padded with trailing zeroes public func plainString(inputDigits: UInt) -> String { + let base = fractionalBase() var frac = fraction var fracStr = "" var i = inputDigits - while (i > 0) { - fracStr += String(frac / (fractionalBase() / 10)) - frac = (frac * 10) % fractionalBase() - i -= 1 + + var nextchar: UInt32 { + let fracChar = frac / (base / 10) + frac = (frac * 10) % base + return fracChar + } + + if integer > 0 { + while (i > 0) { + fracStr += String(nextchar) + i -= 1 + } + return "\(integer)\(fracStr)" + } else { + while (i > 0) { + let fracChar = nextchar + // skip leading zeroes + if fracStr.count > 0 || fracChar > 0 { + fracStr += String(fracChar) + } + i -= 1 + } + return fracStr.count > 0 ? fracStr : "0" } - return "\(integer)\(fracStr)" } /// read-only getter