【问题标题】:iOS Swift - Convert double to String precision last value rounded to next valueiOS Swift - 将双精度转换为字符串精度最后一个值舍入到下一个值
【发布时间】:2020-05-20 11:09:00
【问题描述】:

示例值: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。我确实希望我的最后一位数字四舍五入到下一位数字。如何解决这个问题。任何帮助都将得到应用。提前感谢

【问题讨论】:

标签: swift string double


【解决方案1】:

如果使用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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多