2017-08-08 124 views
2

我想隐蔽一个String货币和保持小数点后2位:的NumberFormatter货币类型最多小数点后2位

let formatter = NumberFormatter() 
formatter.maximumFractionDigits = 2 
formatter.numberStyle = .currency 
formatter.locale = Locale(identifier: "zh_CN") 
formatter.number(from: "¥12")  // Output 12 correct. 
formatter.number(from: "¥1213.1263") // Output 1213.1263 
formatter.string(from: 1213.1263) // Output "¥1,213.13" 

你可以看到在评论输出。为什么不是formatter.number(from: "¥1213.1263")输出1213.13?我已经设置了最大分数位数是2

回答

1

maximumFractionDigits和所有类似的属性仅用于将数字格式化为字符串。当使用NumberFormatter.number(from: String)时,它们不用于舍入数字。

+0

但是文档中提到:接收器允许作为_input_和_output_的小数点分隔符后的最大位数。这意味着它应该返回nil为¥1213.1263,因为在输入中不允许有超过2个小数位。你如何解释这个? – Sweeper

+0

文档(在其他一些情况下)不是100%准确的。它没有说明它指的是哪个* input *和/或* output *格式。您可以检查自己,这是'NumberFormatter'的工作原理,并且已经工作了很长时间。 –

+1

哦,好吧。我同意苹果公司的文档很糟糕。 – Sweeper