簡體   English   中英

什么是NSNumberFormatter默認roundingMode

[英]What is NSNumberFormatter default roundingMode

當我做:

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

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM