Предположим, у меня есть номер 2000000. Я хочу написать это как 20 Lac.
как я могу это решить?
Я попытался использовать NSNumberFormatter с номерным стилем .spellout.
@JoakimDanielson en.wikipedia.org/wiki/Лах
@RobertDresler любая версия Swift
Пытаться
func formatNumber(_ n: Int) -> String {
let num = abs(Double(n))
let sign = (n < 0) ? "-" : ""
switch num {
case 10_000_000...:
let formatted = num / 10_000_000
return "\(sign)\(formatted.clean) Crore"
case 100_000...:
let formatted = num / 100_000
return "\(sign)\(formatted.clean) Lac"
case 1_000...:
let formatted = num / 1_000
return "\(sign)\(formatted.clean) Thousand"
case 0...:
return "\(n)"
default:
return "\(sign)\(n)"
}
}
где Double
Extension
extension Double {
var clean: String {
return String(Int(self))
}
}
И даст следующие результаты
print(formatNumber(2000000)) // 20 Lac
print(formatNumber(1515)) // 1 Thousand
print(formatNumber(999999)) // 9 Lac
print(formatNumber(1000999)) // 10 Lac
print(formatNumber(103099900))// 10 Crore
попробуй это:
let actualAmount: Float = 103099900
var currency = Double()
var shortenedAmount: Float = actualAmount
var suffix = ""
currency = Double(shortenedAmount)
if currency >= 10000000.0 {
suffix = "C"
shortenedAmount /= 10000000.0
} else if currency >= 1000000.0 {
suffix = "M"
shortenedAmount /= 1000000.0
} else if currency >= 100000.0 {
suffix = "L"
shortenedAmount /= 100000.0
} else if currency >= 1000.0 {
suffix = "K"
shortenedAmount /= 1000.0
}
var numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
var numberAsString = numberFormatter.string(from: NSNumber(value: shortenedAmount))
var requiredString = "\(numberAsString ?? "")\(suffix)"
print(requiredString)
Результат:
10.31C
Что здесь представляет Lac и какова логика перехода от 2000000 к 20? Может быть, вы можете показать нам, что вы пробовали?