Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中使用println格式化数字_Swift_Println_Nsformatter - Fatal编程技术网

如何在Swift中使用println格式化数字

如何在Swift中使用println格式化数字,swift,println,nsformatter,Swift,Println,Nsformatter,在Objective-C中注销浮点时,您可以执行以下操作,将输出限制在小数点后2位: float avgTemp = 66.844322156 NSLog (@"average temp. = %.2f", avgTemp); 但在斯威夫特你是怎么做到的? 在Swift中如何转义println中的其他字符 下面是一个常规的Swiftprintln声明: println ("Avg. temp = \(avgTemp)") 那么如何限制小数点 另外,如何在println中转义双引号?可以使用N

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

float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);
但在斯威夫特你是怎么做到的? 在Swift中如何转义
println
中的其他字符

下面是一个常规的Swift
println
声明:

println ("Avg. temp = \(avgTemp)")
那么如何限制小数点


另外,如何在
println
中转义双引号?

可以使用NSNumberFormatter调整数字作为字符串的格式:

let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.DecimalStyle
nf.maximumFractionDigits = 2
println(nf.stringFromNumber(0.33333)) // prints 0.33
可以用反斜杠转义引号

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

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

let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))
它类似于NSString的swift版本
stringWithFormat

Println()已弃用

var avgTemp=66.844322156
打印(“平均温度=(四舍五入(平均温度*100)/100)”//平均温度=66.84

//或

打印(NSString(格式:“平均温度=%.2f”,avgTemp))//平均温度=66.84 avgTemp=66.846322156


打印(字符串(格式:“平均温度=%.2f”,avgTemp))//平均温度=66.85
如果需要经常以一定精度打印浮点数,可以使用方便的方法扩展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)")

可能重复的可能重复与在目标CYeah中使用
%.2f
相比,似乎要做很多工作,我同意。肯定有办法让它更高效,比如扩展,但它仍然很混乱。同意。必须有一种更简单的基本格式字符串方法。由于Swift仍处于测试阶段,可能还没有实现内联字符串格式化程序\()符号直接访问其中任何值的description属性。能够包含其他格式参数会很酷,但至少目前所有这些都必须手动完成。println在2.0中被删除,请使用print代替。您必须在“(round(avgTemp*100)/100)”之前加上斜杠(\)才能使其正常工作。这样:
print(“平均温度=\(四舍五入(avgTemp*100)/100)”)
let x = 5.23325
print("The value of x is \(x.sf2)")