Swift NumberFormatter不一致的四舍五入

473 阅读1分钟
let formater = NumberFormatter()
formater.minimumFractionDigits = 2
formater.maximumFractionDigits = 2
let str0 = formater.string(from: 9.765)
let str1 = formater.string(from: 9.775)
let str2 = formater.string(from: 9.785)
let str3 = formater.string(from: 9.795)
print(str0, str1, str2, str3)

实际的输出

Optional("9.76") Optional("9.78") Optional("9.78") Optional("9.80")

本来的期望应该是

Optional("9.77") Optional("9.78") Optional("9.79") Optional("9.80")

可能涉及到的进位模式

Swift-NSNumber中RoundingMode进位模式