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"
示例值: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"