Numbeformatter
var formatedPrice: String? {
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "ja_JP")
formatter.numberStyle = .decimal
if let formatedString = formatter.string(from: self as NSNumber) {
return formatedString }
return nil
print(Double(12_121_212_121_212_121_212).formattedPrice)
这是结果:可选(“¥12,121,212,121,212,100,000”如果太大,请四舍五入,任何人都可以解决吗?
如果需要15位以上的精度,则可以使用Swift Decimal类型。顺便说一句,在创建Decimal值时应使用其字符串初始化程序,并创建静态NumberFormatter以避免每次调用此属性时都创建一个新的:[]
extension Decimal { var formatedPrice: String? { Decimal.formatter.string(for: self) } static let formatter: NumberFormatter = { let formatter = NumberFormatter() formatter.locale = Locale(identifier: "ja_JP") formatter.numberStyle = .currency return formatter }() }
用法:
Decimal(string: "12121212121212121987")?.formatedPrice // "¥12,121,212,121,212,121,987"