2017-01-02 3 views
1

NumberFormatterを使用していくつかの奇妙な動作が発生しています。丸めなしの数値フォーマッタ。 Xcodeの1つの動作が別のプレイグラウンドに投影します

次のコード:私のXcodeプロジェクトで実行した場合とplayground.swiftファイルで実行すると

let str = "5.99" 
let doub = Double(str) 
let nsnum = NSNumber(floatLiteral: doub!) 
let formatter = NumberFormatter() 

formatter.numberStyle = .currency 
formatter.locale = NSLocale(localeIdentifier: "da_DK") as Locale! 
formatter.currencySymbol = "" 

let forStr = formatter.string(from: nsnum) 

は同じ結果を返しません。

forStrのプロジェクトではforStrは "5.99"です。forStrは "6"です。遊び場からの行動は私が後にしたものです。私が追加しようとしている

formatter.maximumFractionDigits = 2 
formatter.roundingMode = .down 

しかし、彼らは私のプロジェクトには影響しません。

これはどうして起こったのでしょうか?

+0

で結果を分割する必要があり、 'forStr'は'「5,99」 '両方の遊び場でコンパイルプロジェクトです。 –

+0

こんにちは@MartinR、多分私のプロジェクトのバグ? – Frederik

答えて

0

これにはラウンド関数を使用する必要があります。

2桁の精度が必要だとします。そして、あなたはそれを丸める、その後、100を掛け、その後、私は問題を再現することはできません100

let a = 5.9999 
let b = Double(round(100*a)/100) 
print(b) //Output will be 6.0 
+0

こんにちは@私はあなたが私の質問を誤解したと思います。私はその番号を丸めたくありません。 – Frederik

関連する問題