在 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.00
,1.2
为1.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 中将小数点后的逗号和零值添加到千位后的数字字符串中的主要内容,如果未能解决你的问题,请参考以下文章