二元运算符*不能应用于Int和Double类型的操作数

Jon*_*ira 49 swift

我正在尝试构建一个简单的Swift应用来计算增值税(增值税= 20%).

class ViewController: UIViewController {

@IBOutlet var resultTextView: UITextView!
@IBOutlet var inputTextField: UITextField!
@IBOutlet var calculateVATButton: UIButton!

override func viewDidLoad() {


    super.viewDidLoad()


    func taxesFree(number: Int)-> Double{


    var textfield = self.inputTextField.text.toInt()!
    let VAT = 0.2
    var result = textfield * VAT
     return result

              }
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我一直在努力

二进制运算符*不能应用于Int和Double类型的操作数

在结果行上

var result = textfield * VAT
Run Code Online (Sandbox Code Playgroud)

在功能里面.

Gre*_*reg 56

您应该将一种类型转换为另一种类型,因此两个变量应该是相同的类型:

var result: Double = Double(textfield) * VAT
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这种行为非常不方便.这些都不是强制执行的.Swift制造商应该停止将开发人员视为总愚蠢.任何人都会期望1.5*5 = 7.5而不是7,除非你明确做出回合.保持操作数最高精度的经典方法是要走的路.值得信赖和证明. (7认同)

Bad*_*Cat 9

这是因为你试图将Int(文本字段)与Double(VAT)相乘.因为使用这样的操作你可能会失去双Swift的精度,不允许将一个转换为另一个,所以你需要隐式地将Int转换为Double ...

var result = Double(textfield) * VAT
Run Code Online (Sandbox Code Playgroud)