显示数字的方式有很多种,例如:
16.666.67
这些都是针对不同地区和/或国家/地区的有效数字。 在我们的用例中,我们必须使用以下表示:
16.666.67
由于
但是,对于带有句点十进制编码器self.numberFormatter = NumberFormatter()
self.numberFormatter.numberStyle = .decimal;
self.numberFormatter.minimumFractionDigits = 0;
self.numberFormatter.maximumFractionDigits = 2;
self.numberFormatter.decimalSeparator = ".";
print(self.numberFormatter.number(from: "16.666.67");
的数字格式符号不是有效数字:
nil
导致 let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal;
numberFormatter.minimumFractionDigits = 0;
numberFormatter.maximumFractionDigits = 2;
numberFormatter.groupingSeparator = ".";
numberFormatter.decimalSeparator = ".";
print(numberFormatter.number(from: "16666"));
print(numberFormatter.number(from: "16666,67"));
print(numberFormatter.number(from: "16666.67"));
print(numberFormatter.number(from: "16.666"));
print(numberFormatter.number(from: "16.666,67"));
print(numberFormatter.number(from: "16.666.67"));
。为什么这是一个无效的数字?我该如何解决这个问题?'
修改
以下测试:
Optional(16666)
nil
Optional(16666.67)
Optional(16666)
nil
nil
输出是:
onload="alert('done!')";
function () {
alert("trigger.Event("keydown", {keyCode: 13});");
}
答案 0 :(得分:2)
问题是字符串 16.667.67 与 This.is.a.number.00 一样无效。
您需要使String变量有效。
编辑:
根据评论,这听起来像是语言行为问题(Java与Swift)。
我正在看到关于处理这个问题的其他意见,但对我来说,看起来它可以归结为Swift NumberFormatter如何自动处理具有多个小数点的String输入。与(某些)其他语言不同,您可能需要在调用NumberFormatter之前对字符串进行一些预格式化。