25

在 Objective-C 中注销浮点数时,您可以执行以下操作以将输出限制为小数点后 2 位:

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

但是你如何在 Swift 中做到这一点?以及如何println在 Swift 中转义其他角色?

这是一个常规的 Swiftprintln语句:

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

那么如何限制小数位呢?

另外,你如何逃避双引号println

4

4 回答 4

28

这是迄今为止我找到的最短的解决方案:

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

它就像 NSString 的 swift 版本stringWithFormat

于 2014-06-08T04:27:25.023 回答
11

可以使用 NSNumberFormatter 调整关于数字格式的所有内容作为字符串:

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

您可以使用反斜杠转义引号

println("\"God is dead\" -Nietzsche")
于 2014-06-08T04:01:13.353 回答
8

不推荐使用 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
于 2015-05-14T08:26:37.800 回答
0

如果您需要经常以一定的精度打印浮点数,您可以使用方便的方法扩展 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)")
于 2015-11-11T16:30:23.903 回答