iOS Swift - 将双精度转换为字符串精度最后一个值四舍五入到下一个值

iOS Swift - Convert double to String precision last value rounded to next value

示例值:3.00035358。我正在尝试将双精度值转换为字符串

方法一:

let num = NSNumber(value:self)
let formatter : NumberFormatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 4
let str = formatter.string(from: num)!
return str

方法2:

extension Double {

    var stringWithoutZeroFraction: String {
        return truncatingRemainder(dividingBy: 1) == 0 ? String(d: "%.0f", self) : String(format:"%.4f", self)
    }
}

预计输出为 3.003,但实际为 3.004。我确实希望我的最后一位数字四舍五入到下一个 digit.how 来修复 issue.any 帮助将提前 appricated.thanks

如果使用NumberFormatter,需要将roundingMode设置为.floor来实现截断。另外,如果你想截断,你可能想设置 maximumFractionDigits 而不是 minimumFractionDigits.

extension Double {
    var string: String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.maximumFractionDigits = 4
        formatter.roundingMode = .floor
        return formatter.string(for: self) ?? description
    }
}

3.00035358.string // "3.0003"