NSNumberFormatter 对减号感到困惑?
NSNumberFormatter confused about minus?
看看这个:
(lldb) po NSNumberFormatter().numberFromString("+10.6")
nil
(lldb) po NSNumberFormatter().numberFromString("10.6")
▿ Optional(10.6)
(lldb) po NSNumberFormatter().numberFromString("-10.6")
▿ Optional(-10.6)
显然,在数字上加上减号是完全有效的,但加号则不然。这是预期的行为,确实如此,有人知道为什么吗?
The problem is that no locale uses a positive prefix by default in their number formatters.
您需要明确告诉您的 NSNumberFormatter
实例要做什么。
这适用于 Xcode 游乐场:
import Foundation
// this outputs "nil"
let bustedNnumber = NSNumberFormatter().numberFromString("+10.6")
// this outputs "-10.6"
let minusnumber = NSNumberFormatter().numberFromString("-10.6")
let nf = NSNumberFormatter()
nf.numberStyle = .DecimalStyle
nf.positivePrefix = "+"
// this outputs "10.6"
let positiveNumber = nf.numberFromString("+10.6")
我不能说为什么 NSNumberFormatter 不能容忍“+”符号,但是 Swift 的 Float 类型似乎更聪明:
Float("10.6") --> 10.6
Float("+10.6") --> 10.6
Float("-10.6") --> -10.6
Float("Garbage") --> nil
它不是 return NSNumber,但我猜你总是可以输入 cast/convert 它。
看看这个:
(lldb) po NSNumberFormatter().numberFromString("+10.6")
nil
(lldb) po NSNumberFormatter().numberFromString("10.6")
▿ Optional(10.6)
(lldb) po NSNumberFormatter().numberFromString("-10.6")
▿ Optional(-10.6)
显然,在数字上加上减号是完全有效的,但加号则不然。这是预期的行为,确实如此,有人知道为什么吗?
The problem is that no locale uses a positive prefix by default in their number formatters.
您需要明确告诉您的 NSNumberFormatter
实例要做什么。
这适用于 Xcode 游乐场:
import Foundation
// this outputs "nil"
let bustedNnumber = NSNumberFormatter().numberFromString("+10.6")
// this outputs "-10.6"
let minusnumber = NSNumberFormatter().numberFromString("-10.6")
let nf = NSNumberFormatter()
nf.numberStyle = .DecimalStyle
nf.positivePrefix = "+"
// this outputs "10.6"
let positiveNumber = nf.numberFromString("+10.6")
我不能说为什么 NSNumberFormatter 不能容忍“+”符号,但是 Swift 的 Float 类型似乎更聪明:
Float("10.6") --> 10.6
Float("+10.6") --> 10.6
Float("-10.6") --> -10.6
Float("Garbage") --> nil
它不是 return NSNumber,但我猜你总是可以输入 cast/convert 它。