在快速3迁移后,NumberFormatter无法正常工作

时间:2017-06-02 19:45:33

标签: ios objective-c iphone swift xcode

在我的应用程序中,我尝试格式化数字,使其具有全部3位小数。我使用StringString编号生成一个数字,我发送的字符串是" 1,000"问题在于它是每个" 1"的响应。 当我从swift 2.3迁移到swift3

时发生了这种情况

这是我的代码。

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 3
formatter.maximumFractionDigits = 3
formatter.minimumIntegerDigits = 1

let quantityTxt = self.quantityTextField.text //it print "1,000"
let quantity = formatter.number(from: quantityTxt!)
print(quantity!) //it print "1"

1 个答案:

答案 0 :(得分:0)

注意:我假设你所在的地方是逗号","是小数点分隔符....

您可以在Playground中运行此功能,看看到底发生了什么:

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 3
formatter.maximumFractionDigits = 3
formatter.minimumIntegerDigits = 1

// assign the string of "1,000" to quantityTxt variable
let quantityTxt = "1,000"

// convert that string into a Number
let quantity = formatter.number(from: quantityTxt)

// output the "default" string representation of a Number
print(quantity!)    //it prints "1"

// now, convert that Number back into a formatted string
let qString = formatter.string(from: quantity!)

// output that string
print(qString)    // it prints "1,000"

并且,如果您将字符串更改为" 1,001"然后两次次将打印 1,001 - 因为这是数字 1,001

的默认字符串表示形式