Signal-iOS/SignalServiceKit/Util/Int+SSK.swift
2024-03-27 12:22:52 -05:00

41 lines
1.1 KiB
Swift

//
// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public extension Int {
var abbreviatedString: String {
let value: Double
let suffix: String
switch abs(self) {
case 1_000..<1_000_000:
value = Double(self) / 1_000
suffix = "K"
case 1_000_000..<1_000_000_000:
value = Double(self) / 1_000_000
suffix = "M"
case 1_000_000_000...Int.max:
value = Double(self) / 1_000_000_000
suffix = "B"
default:
value = Double(self)
suffix = ""
}
let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 1
numberFormatter.minimumFractionDigits = 0
numberFormatter.negativeSuffix = suffix
numberFormatter.positiveSuffix = suffix
guard let result = numberFormatter.string(for: value) else {
owsFailDebug("unexpectedly failed to format number")
return "\(self)"
}
return result
}
}