如何在 Swift 中正确处理双精度值之间的比较



我知道有人问过类似的问题,但我仍然无法找到解决方案。

我像这样得到双倍的价值。

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)

相关内容

  • 没有找到相关文章