2015-03-09 4 views

ответ

14

Swift Xcode 6.3, SOLVED (я решил оставить $ в коде). Если вы не хотите $ на выходе, изменение .CurrencyStyle к .DecimalStyle

var fv = 3534234.55 
var formatter = NSNumberFormatter() 
formatter.numberStyle = .CurrencyStyle 
formatter.maximumFractionDigits = 0; 
resultFV.text = formatter.stringFromNumber(fv) // result: $3,534,235 – 
1

Почему вы не ограничивают точность, как ".0f"

resultFV.text = String.localizedStringWithFormat("%.0f", fv) 

Обновлено Ответ:

var formatter: NSNumberFormatter = NSNumberFormatter() 
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle; 
var formattedStr: NSString = formatter.stringFromNumber(NSNumber(double: fv))! 
resultFV.text = formattedStr 
+0

приятно, но мне нужны запятые для тысяч разделителей, например 1,123,456 –

+0

см. Обновленный ответ, надеюсь, что сработает – arthankamal

+0

ok см. Мое исправление выше ??? Как я могу форматировать код, похожий на код, как у вас? спасибо –

15

Вы должны использовать NSNumberFormatter для этого:

let numberFormatter = NSNumberFormatter() 
numberFormatter.numberStyle = .DecimalStyle 

resultFV.text = numberFormatter.stringFromNumber(fv) 
21

В Swift 3

NumberFormatter.localizedString(from: NSNumber(value: whatever), number: NumberFormatter.Style.decimal) 
+1

Вы заслуживаете большего кредита, чем вы получили за это. Я пытался найти этот простой ответ в течение долгого времени, и никто, казалось, не имел его, пока я не нашел это. – SomeGuy

4

Вы можете добиться этого с помощью строковых инициализаторами в Swift 3.

// 1605436 
let value: Int = 1605436 

// "1,605,436" where Locale == en_US 
let formattedInt = String(format: "%d", locale: Locale.current, value) 

// "1,605,436" where Locale == en_US 
let formattedDouble = String(format: "%.0f", locale: Locale.current, Double(value)) 
Смежные вопросы