在 Swift 中将小数点后的逗号和零值添加到千位后的数字字符串中

Posted

技术标签:

【中文标题】在 Swift 中将小数点后的逗号和零值添加到千位后的数字字符串中【英文标题】:Add comma and zero value after decimal to a string of Number after thousand in Swift 【发布时间】:2019-11-14 10:48:16 【问题描述】:

您好,我从后端 API 获取字符串类型的价格,我试图在千位之后放置逗号,在字符串之后放置 .00。如果字符串在小数点后有一些值,那么它应该显示像 23,000.55 这样的值,否则如果在小数点后没有任何东西,那么想要显示像这样的值 23,000.00 。我怎样才能制作这样的格式?我试过 NumberFormatter 但是当我运行应用程序时,它只在千位后显示逗号,但在小数点后不显示双零。这是我的代码,

    let balanceValue = Double(price ?? "0.0")
    let numberFormatter = NumberFormatter()
    numberFormatter.numberStyle = .decimal
    let formattedNumber = numberFormatter.string(from: NSNumber(value:balanceValue ?? 0.0))

当我打印这个值时,它会显示像这样的值,23,000。我希望它像这样显示,23,000.00

【问题讨论】:

阅读有关NumberFormatter 的文档。 developer.apple.com/documentation/foundation/numberformatter。有些属性可以帮助您实现所需的目标。查看Configuring Integer and Fraction Digits部分 添加numberFormatter.minimumFractionDigits = 2。您可能还想添加numberFormatter.maximumFractionDigits = 2 假设如果价格在小数点后有值,它将显示实际值或零。 @丹尼尔 @Hamzayes,如果您设置minimumFractionDigits = 2,它将始终显示至少 2 位小数。这意味着1 将被格式化为1.001.21.20 【参考方案1】:

您可以使用minimumFractionDigits 和maximumFractionDigits 来格式化显示的位数。

顾名思义,它设置了最小和最大位数。在您的情况下,代码将是:

let balanceValue = Double(price ?? "0.0")
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.minimumFractionDigits = 2
numberFormatter.maximumFractionDigits = 2
let formattedNumber = numberFormatter.string(from: NSNumber(value:balanceValue ?? 0.0))

print(formattedNumber) 现在将输出23,000.00

【讨论】:

非常感谢,它通过添加 numberFormatter.minimumFractionDigits = 2 得到修复。 @丹尼尔 不需要初始化一个新的NSNumber对象。您可以使用 Formatter 的方法 string(for: Any) 并传递任何 Numeric 类型。顺便说一句,如果您不设置语言环境,您的小数点和分组分隔符可能会改变。【参考方案2】:

/* 此方法用于使用分隔符转换价格 */

 class func convertPriceWithSeprator(_ price: Double) -> String
        let numberFormatter = NumberFormatter()
        numberFormatter.groupingSeparator = ","
        numberFormatter.groupingSize = 3
        numberFormatter.usesGroupingSeparator = true
        numberFormatter.decimalSeparator = "."
        numberFormatter.numberStyle = .decimal
        numberFormatter.maximumFractionDigits = 2
        return numberFormatter.string(from: price as NSNumber)!
    

【讨论】:

你也需要numberFormatter.minimumFractionDigits = 2 感谢您的回答,我已解决。 @Ketan Sodvadiya 不需要初始化一个新的NSNumber对象。您可以使用 Formatter 的方法 string(for: Any) 并传递任何 Numeric 类型。请注意,每次调用此方法时都会创建一个新的数字格式化程序实例 谢谢..它有效..【参考方案3】:

很简单,您可以将numberFormatter.numberStyle 更改为.currency

【讨论】:

以上是关于在 Swift 中将小数点后的逗号和零值添加到千位后的数字字符串中的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发海外语言逗号和小数点颠倒的问题含千位分隔符

添加逗号,小数到数字输出javascript

检测 VB.Net 中数字的文化,即小数点/千位分隔符的句点或逗号

javascript中将整数添加千位符号

使用 0 值指数或尾随 0 使科学计数法无效

如何在swift中将逗号添加到数字?