我知道有类似的问题已被问到,但我仍然无法找到解决方案。
我正在获得这样的双倍价值。
let priceUsdInt = (price as NSString).doubleValue
我希望将此值与1.00进行比较,以便:
if priceUsdInt > 1.00 {
let priceUsdCur = priceUsdInt.currencyUS
finalPriceUsdCur = priceUsdCur
} else {
let priceUsdCur = priceUsdInt.currencyUS6
finalPriceUsdCur = priceUsdCur
}
这总是带来两位小数结果。尽管价值低于1.00。
基本上,我想要实现的是,如果值小于1.00然后显示它直到六位小数,即转换为货币格式时为0.123456,如果不显示其后只有两位小数,即1.23。
感谢您的时间。
答案 0 :(得分:1)
这表明当string
转换为double
值的值低于1.0
且 2位时,货币格式显示 6位精度精度高于1.0
let belowOne = ".12023456"
let belowDoubleVal = Double(belowOne) ?? 0.0
let currencyFormatter = NumberFormatter()
currencyFormatter.numberStyle = .currency
if belowDoubleVal < 1.0 {
// this handles the 6 digit precision you require when value is below 1.0
currencyFormatter.minimumFractionDigits = 6
}
// old way using NSSNumber
// let belowOneString = currencyFormatter.string(from: NSNumber(value: belowDoubleVal))
// you can pass the double value to formatter using .string(for: Any)
// thanks for pointing this out by Leo Dabus
let belowOneString = currencyFormatter.string(for: belowDoubleVal)