如何在Swift中将浮点数显示在UILabel上?

3
import UIKit

class ViewController: UIViewController {
@IBOutlet weak var Screen: UILabel!
var firstNumber = Float()
var secondNumber = Float()
var result = Float()
var operation = ""
var isTypingNumber = false
@IBAction func Number(sender: AnyObject) {
    isTypingNumber = false
    var number = sender.currentTitle
    if isTypingNumber == true {
        Screen.text = Screen.text! + number!!;
    } else {
        Screen.text = number!!;
    }
    isTypingNumber = true
}
@IBAction func Operation(sender: AnyObject) {
    operation = sender.currentTitle!!
    isTypingNumber = false
    firstNumber = Screen.text!.toInt()!
}
@IBAction func Equals(sender: AnyObject) {
    secondNumber = Screen.text!.toInt()!
    isTypingNumber = false
    if operation == "+" {
        result = firstNumber + secondNumber;
    } else if operation == "-" {
        result = firstNumber - secondNumber;
    } else if operation == "x" {
        result = firstNumber * secondNumber;
    } else if operation == "/" {
        result = firstNumber / secondNumber;
    }
    Screen.text = "\(result)"
}
@IBAction func Clear(sender: AnyObject) {
    firstNumber = 0
    secondNumber = 0
    result = 0
    Screen.text = "\(result)"
}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

这是我的代码。我一直收到错误提示“Int”无法转换为“Float”,在firstNumber = Screen.text!.toInt()!和secondNumber = Screen.text!.toInt()!上。
我试图在UILabel(Screen)上显示浮点数。我应该怎么做? 有人能告诉我如何在UILabel中使用float,这是Swift。
谢谢, Rohit

您已经在标签中显示了浮点值。您不应该尝试从标签中提取浮点值;您应该在数据中保留浮点值。标签只是一个视图;浮点值才是模型。 - matt
3个回答

9

您正在尝试将一个Int值赋给类型为Float的变量。在Swift中,这是不允许的。您可以尝试使用以下方法:

let floatValue = (label.text as NSString).floatValue

要在 UILabel 中显示 floatValue,您可以在 Swift 中使用 字符串插值

label.text = "\(floatValue)"

要将一个 Int 转换为 Float,您可以执行以下操作:
floatValue = Float(intValue)

1
问题在于您将firstNumber声明为Float类型,但是您正在向该变量分配一个Int值。

更改为:

firstNumber = Screen.text!.toInt()!

to

firstNumber = (Screen.text! as NSString).floatValue

注意:同样适用于secondNumber

对我有用。谢谢! - Rohorao

1
你可以尝试这个:

你可以尝试这个:

@IBAction var label:UILabel!
var a:Float=1938.22

override func viewDidLoad(){
   super.viewDidLoad()
   label.text="\(a)"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接