SwiftNumberFormatter

问题描述 投票:-3回答:1

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”如果太大,请四舍五入,任何人都可以解决吗?


swift numbers resolution
1个回答
0
投票

如果需要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"
© www.soinside.com 2019 - 2024. All rights reserved.