Swift 5:零负数的格式浮点数
我想格式化一个负数,只剩下两个小数位。 但是,当数字为负-0.00时,我希望它不符合。例如:
let negativeNumber = -0.008
let result = 0.00
我尝试使用NumberFormatter进行此操作,但是我得到了此结果-0.00,我希望此结果0.00
这是我使用的格式化器:
static func formatValue(_ value: Double, currency: Currency? = nil, options: [FormatterOption] = [], locale: Locale = Locale.current) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.locale = locale
let defaultOptions: [FormatterOption] = [.minFractionDigits(2),
.maxFractionDigits(currency?.decimals ?? 2),
.roundingMode(.down)]
var completeDecimals = false
for option in defaultOptions + options {
switch option {
case .minFractionDigits(let minValue):
if let decimals = currency?.decimals, minValue > decimals {
continue
}
formatter.minimumFractionDigits = minValue
case .maxFractionDigits(let maxValue):
if let decimals = currency?.decimals, maxValue > decimals {
continue
}
formatter.maximumFractionDigits = maxValue
case .roundingMode(let mode):
formatter.roundingMode =
}
let formattedNumber = formatter.format(from: value)
return formattedNumber
}
I want to format a negative number and be left with only two decimal places.
But when the number is a negative -0.00 I want it to be unsigned. For example:
let negativeNumber = -0.008
let result = 0.00
I try do this with numberFormatter but i get this result -0.00, and i want this result 0.00
This is the formatter i use:
static func formatValue(_ value: Double, currency: Currency? = nil, options: [FormatterOption] = [], locale: Locale = Locale.current) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.locale = locale
let defaultOptions: [FormatterOption] = [.minFractionDigits(2),
.maxFractionDigits(currency?.decimals ?? 2),
.roundingMode(.down)]
var completeDecimals = false
for option in defaultOptions + options {
switch option {
case .minFractionDigits(let minValue):
if let decimals = currency?.decimals, minValue > decimals {
continue
}
formatter.minimumFractionDigits = minValue
case .maxFractionDigits(let maxValue):
if let decimals = currency?.decimals, maxValue > decimals {
continue
}
formatter.maximumFractionDigits = maxValue
case .roundingMode(let mode):
formatter.roundingMode =
}
let formattedNumber = formatter.format(from: value)
return formattedNumber
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论