我写了这个小型计算器,它在模拟器上完美运行,但是如果我在iPhone 6上测试并运行它,结果总是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.
}
}
在确定这是我用于Textfields的十进制Pad的本地化问题之后,我使用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.
}
新问题是最后一个括号后的expected declaration
错误。
我现在不知道为什么。
答案 0 :(得分:0)
将值除以100除以另一个变量,并打印该值以查看正在进行的操作。
let finalValue = round(ergebnis * 100) / 100.0
println("\(finalValue)")
ergebnisLabel.text = "\(finalValue)"
将int类型划分为浮点类型可能会出现问题,而在字符串文字中执行此操作无法转换为该值。
因此,如果您想要内联计算,还可以确保将100.0
除以的值为双倍。
ergebnisLabel.text = "\(Double(round(ergebnis*100)) / 100.0)"