2017-08-08 3 views
2

を入力し、私は通貨に文字列をひそかし、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_として小数点記号の後の最大桁数を許可しています。これは、入力に2小数点以下しか使用できないため、1213.1263円でnilを返さなければならないことを意味します。これはどうやって説明しましたか? – Sweeper

+0

ドキュメントは、他の多くのケースと同様に100%正確ではありません。これは、* input *および/または* output *が参照する形式を示していません。あなたは自分で確認することができます。これは、 'NumberFormatter'がどのように動作し、長い間働いていたかです。 –

+1

ああ。私はAppleが悪いことに同意する。 – Sweeper