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

iOS Swift-将双精度转换为字符串精度最后一个值舍入为下一个值,swift,string,double,Swift,String,Double,示例值:3.00035358。我正在尝试将双精度值转换为字符串 方法1: let num = NSNumber(value:self) let formatter : NumberFormatter = NumberFormatter() formatter.numberStyle = .decimal formatter.minimumFractionDigits = 4 let str = formatter.string(from: num)! return str 方法2: exten

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

方法1:

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。我确实希望将我的最后一个数字四舍五入到下一个数字。如何解决此问题。我们将感谢您提供的任何帮助。如果您使用
数字格式
,您需要将
四舍五入模式
设置为
.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"

这回答了你的问题吗?