Подтвердить что ты не робот

Как использовать println в Swift для форматирования числа

При выгрузке поплавка в Objective-C вы можете сделать следующее, чтобы ограничить вывод только двумя десятичными знаками:

float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);

Но как вы это делаете в Swift? И как вы избегаете других символов в println в Swift?

Вот регулярный оператор Swift println:

println ("Avg. temp = \(avgTemp)")

Итак, как вы ограничиваете десятичные знаки?

Также, как вы избегаете двойных кавычек в println?

4b9b3361

Ответ 1

Здесь кратчайшее решение, которое я нашел до сих пор:

let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))

Это похоже на быструю версию NSString stringWithFormat

Ответ 2

Все о формате числа в виде строки можно настроить с помощью NSNumberFormatter:

let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.DecimalStyle
nf.maximumFractionDigits = 2
println(nf.stringFromNumber(0.33333)) // prints 0.33

Вы можете избежать кавычек с помощью обратного слэша

println("\"God is dead\" -Nietzsche")

Ответ 3

Println() устарел.

 var avgTemp = 66.844322156
  print("average temp. = (round(avgTemp*100)/100)")   // average temp. = 66.84

//or

print(NSString(format:"average temp. = %.2f", avgTemp))) // average temp. = 66.84 avgTemp = 66.846322156

print(String(format:"average temp. = %.2f", avgTemp)) // average temp. = 66.85

Ответ 4

Если вам нужно печатать числа с плавающей запятой часто с определенной точностью, вы можете расширить Float и Double с помощью удобных методов. Например, для 2-х значащих цифр:

// get Float or Double with 2 significant figure precision
var numberFormatter = NSNumberFormatter()
extension Float {
    var sf2:String {
        get {
            numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
            numberFormatter.maximumSignificantDigits = 2
            return numberFormatter.stringFromNumber(self)!
        }
    }
}
extension Double {
    var sf2:String {
        get {
            numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
            numberFormatter.maximumSignificantDigits = 2
            return numberFormatter.stringFromNumber(self)!
        }
    }
}

Затем, когда вам нужно печатать вещи:

let x = 5.23325
print("The value of x is \(x.sf2)")