在Objective-C中注销浮动时,您可以执行以下操作将输出限制为仅小数点后两位:
float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);
但是你如何在Swift中做到这一点?
你如何逃避Swift中println
中的其他角色?
这是一个常规的Swift println
声明:
println ("Avg. temp = \(avgTemp)")
那么如何限制小数位呢?
另外,你如何逃避println
中的双引号?
答案 0 :(得分:27)
这是我迄今为止找到的最短解决方案:
let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))
它就像NSString的stringWithFormat
答案 1 :(得分: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")
答案 2 :(得分:7)
不推荐使用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
答案 3 :(得分: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)")