我选择“计算”功能后会执行一些计算。结果取决于输入的值。我需要将结果限制为2位小数。我尝试了很多没有运气的选择。任何帮助在这里将不胜感激。同样,我在iOS应用程序中使用Swift 4。
以下是我正在使用的一些代码:
@IBOutlet weak var f0TextField: UITextField!
@IBAction func calculateButton(_ sender: Any) {
f0TextField.text = "\(((Double(f1TextField.text ?? "%.2f") ?? 0.0) + (Double(f2TextField.text ?? "%.2f") ?? 0.0))/2)"
我还有6个“文本字段”,我也必须应用它。
答案 0 :(得分:1)
如果您想要小数点后2位的最终答案,则应将其应用于最终结果,如下所示。
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
实施例
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
答案 1 :(得分:0)
对@Sebastian的信用,使用他建议的代码,它的工作原理。您可以尝试它是否适合您
首先有这个扩展名
extension Double {
/// Rounds the double to decimal places value
func rounded(toPlaces places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}}
然后
let x = Double(textField.text).rounded(toPlaces: 2)
print(x) // to see if it works
答案 2 :(得分:0)
您需要分解该代码。首先获取两个文本字段的文本。然后将两个文本值转换为Double
。然后添加两个数字。然后将总和转换为根据需要格式化的字符串。
以这种方式:
if let val1 = Double(f1TextField.text ?? "0"), let val2 = Double(f12TextField.text ?? "0") {
let sum = val1 + val2
f0TextField.text = String(format: "%.2f", sum)
}
但是你真的应该使用NumberFormatter
以适当的区域敏感方式显示结果。而且很可能你需要它来解析用户输入的数字。
您可能还应该创建一个函数,该函数接收任意两个文本字段并返回String
,然后您可以在相应的文本字段中进行设置。
答案 3 :(得分:0)
尝试使用常用的Extension for Double
extension Double
{
//MARK: Rounds the double to decimal places value
/**
This func return Double to rounded Place
- paramter places : Number of places to be rounded
*/
func rounded(toPlaces places:Int) -> Double
{
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Usgae - Double(newValue).rounded(toPlaces: 0)