2017-01-02 8 views
1

Я испытываю какое-то странное поведение, используя NumberFormatter.Номерной формат без округления. Одно поведение в Xcode project другое на игровой площадке

Следующий код:

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) 

не возвращает тот же результат при запуске в моей Xcode проекте и при запуске в файле playground.swift.

На игровой площадке forStr "5.99" в проекте forStr есть "6". Поведение с детской площадки - это то, что мне нужно.

Я попытался добавить:

formatter.maximumFractionDigits = 2 
formatter.roundingMode = .down 

, но они не имеют никакого эффекта в моем проекте.

Любые идеи относительно того, почему это происходит?

+0

Я не могу воспроизвести проблему, '' forStr' является «5,99» 'в обоих Playground и составлен проект , –

+0

Привет @MartinR, может быть, это ошибка в моем проекте? – Frederik

ответ

0

Для этого вам необходимо использовать круглую функцию.

Скажите, что вам нужна точность в две цифры. Затем вам нужно умножить на 100, а затем вокруг него, а затем полученный результат разделить на 100.

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

Привет @ Аниль Я думаю, вы неправильно поняли мой вопрос. Я не хочу округлять число. – Frederik

 Смежные вопросы

  • Нет связанных вопросов^_^