我知道有人问过类似的问题,但我仍然无法找到解决方案。
我像这样得到双倍的价值。
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。
谢谢你的时间。
这演示了当从string
覆盖到double
值的值低于 1.0
时,货币格式的 6 位精度和 2 位精度(当其高于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)