2017-08-08 58 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