Ios 测试设备上的结果始终为100

Ios 测试设备上的结果始终为100,ios,swift,Ios,Swift,我写了这个小计算器,它在模拟器上运行得非常好,但是如果我在我的iPhone6上测试并运行它,结果总是100 不管我是否在最后取整结果,结果都是一样的:100.0 import UIKit class maininterfaceVC: UIViewController { @IBOutlet weak var volltonTF: UITextField! @IBOutlet weak var rasterTF: UITextField! @IBOutlet we

我写了这个小计算器,它在模拟器上运行得非常好,但是如果我在我的iPhone6上测试并运行它,结果总是
100

不管我是否在最后取整结果,结果都是一样的:
100.0

import UIKit

class maininterfaceVC: UIViewController {



    @IBOutlet weak var volltonTF: UITextField!
    @IBOutlet weak var rasterTF: UITextField!

    @IBOutlet weak var ergebnisLabel: UILabel!

    @IBAction func berechnenButtonPressed(sender: AnyObject) {
        let vollton = NSString(string: volltonTF.text!).doubleValue
        let raster = NSString(string: rasterTF.text!).doubleValue
        //Strings werden in Double konvertiert

        let ergebnis = ((((vollton - raster) / vollton)*100))
        //Druckkontrast wird ausgerechnet


        ergebnisLabel.text = "\(round(ergebnis*100)/100.0)"
        //Ergebnis wird auf zwei Nachkommastellen gerundet und ausgegeben.

    }
}
在发现这是我用于文本字段的十进制键盘的本地化问题后,我使用
NSNumberFormatter()
floatConverter、英语声明和英语注释重新构建了程序。 更新的代码如下所示

import UIKit

extension String {

    var floatConverter: Float {
        let converter = NSNumberFormatter()
        converter.decimalSeparator = "."
        if let result = converter.numberFromString(self) {
            return result.floatValue
        } else {
            converter.decimalSeparator = ","
            if let result = converter.numberFromString(self) {
                return result.floatValue
            }
        }
        return 0
    }



class ViewController: UIViewController {



    @IBOutlet weak var densityOfSolid: UITextField!
    @IBOutlet weak var densityOfTint: UITextField!

    @IBOutlet weak var resultLabel: UILabel!



    @IBAction func Calculate(sender: AnyObject) {

        let solidTF = densityOfSolid.text
        let solid = NSString(string: String(format:"%.2f", solidTF!.floatConverter)).floatValue

        let tintTF = densityOfTint.text
        let tint = NSString(string: String(format: "%.2f", tintTF!.floatConverter)).floatValue


        let result = (((solid - tint) / solid) * 100.0)
        //calculate the Printcontrast


        resultLabel.text = "\(result)"
        //give out the result on label.


    }
新问题是在最后一个括号后出现
预期声明
错误。
我现在不知道为什么。

在另一个变量中将值除以100,然后打印该值以查看发生了什么

let finalValue = round(ergebnis * 100) / 100.0
println("\(finalValue)")
ergebnisLabel.text = "\(finalValue)"
看起来可能存在将int类型除以浮点类型的问题,在字符串文本中执行此操作无法转换为该值

因此,如果要进行内联计算,还可以确保要除以
100.0
的值是双精度的

ergebnisLabel.text = "\(Double(round(ergebnis*100)) / 100.0)"

请尝试使用调试器或添加打印语句,以准确找出导致问题的行。目前看来,似乎没有任何明显的问题。第一:你应该用英语注释你的代码。第二:这同样适用于变量命名。第三:你的标题说结果总是1,后来你说结果总是100。谢谢你的回答,我发现了问题。这不是一个数据类型问题,问题是我对文本字段使用了小数点。在模拟器中,键盘上有一个
,一切正常。但是在我的设备上是一个
而不是
你有什么办法吗?这是本地化的问题,你可以用它来帮你解决。或者,在将文本字段转换为双精度之前,您可以手动将输入中出现的所有
替换为
。您好,请查看问题中的新代码好吗?:)非常感谢。