当我这样做时:
let a = self.oddsNumberFormatter.stringFromNumber(2.601) // 2.60
let b = self.oddsNumberFormatter.stringFromNumber(2.655) // 2.66
let c = self.oddsNumberFormatter.stringFromNumber(2.658) // 2.66
let d = self.oddsNumberFormatter.stringFromNumber(2.678) // 2.68
let e = self.oddsNumberFormatter.stringFromNumber(2.699) // 2.70
默认使用的舍入模式是什么。我可以将其缩小到.RoundHalfUp
或.RoundHalfEven
,但无法知道哪些是使用的,因为它们会为我的测试用例提供相同的结果
let formatter = NSNumberFormatter()
formatter.locale = NSLocale.currentLocale()
formatter.numberStyle = .DecimalStyle
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
答案 0 :(得分:3)
NumberFormatter
的默认舍入模式为.halfEven
,表示该数字向最接近的偶数舍入。
这是IEEE 754中的默认舍入模式。
请注意以下示例:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
print(formatter.string(from: 2.625)) // "2.62"
print(formatter.string(from: 2.635)) // "2.64"
print(formatter.string(from: 2.645)) // "2.64"
print(formatter.string(from: 2.655)) // "2.66"
.halfUp
四舍五入:
formatter.roundingMode = .halfUp
print(formatter.string(from: 2.625)) // "2.63"
print(formatter.string(from: 2.635)) // "2.64"
print(formatter.string(from: 2.645)) // "2.65"
print(formatter.string(from: 2.655)) // "2.66"