当前位置: 首页 > 知识库问答 >
问题:

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

张永嘉
2023-03-14

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

func taxesFree(number: Int) -> Double {

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

    return result        
}

因为某种原因我一直

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

在线上

var result = textfield * VAT    

共有3个答案

易元青
2023-03-14

这里的问题是给出的语句字面上是正确的,因为Swift是强类型的,并且不会隐式强制。我自己也遇到过类似的情况,“二进制运算符”-不能应用于“Date”和“Int”类型的操作数。

如果您写:

var result = 10 * 0.2

...那很好,但如果你写:

var number = 10
var result = number * 0.2

...这不好。这是因为无类型的显式值具有编译器选择的适当类型,因此实际上第一行被视为var结果=Double(10)*Double(0.2)。毕竟,作为一个人,您可能会将10表示为浮点数或整数——您通常不会说哪个,并且希望从上下文中可以清楚地看出。这可能有点痛苦,但强类型的想法是,在解析代码后,它只能有一个有效的编译表达式。

一般来说,您会使用构造函数构建一个新值,因此在您的情况下var结果=Double(text field)*VAT。这与强制转换(text field as Double)不同,因为Int不是Double的子类;相反,您正在做的是要求在运行时构建一个全新的Double值,如果值非常高或很低,则会失去一些准确性。这就是松散类型语言对几乎所有直接值隐式执行的操作,尽管时间成本很小但很重要。

在您的特定情况下,首先拥有Int是没有价值的(即使没有零头部分是可能的),所以您需要的是:

func taxesFree(number: Int) -> Double {
    var textfield = Double(self.inputTextField.text)!
    let VAT = 0.2
    var result = textfield * VAT
    return result
}
沈俊晤
2023-03-14

这是因为您试图将Int(textfield)与Double(VAT)相乘。因为这样的操作可能会失去双精度Swift不允许将一个转换为另一个,所以需要显式地将Int转换为双精度。。。

var result = Double(textfield) * VAT
李永寿
2023-03-14

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

var result: Double = Double(textfield) * VAT
 类似资料:
  • 问题内容: 我正在尝试创建一个for循环,但似乎无法理解如何摆脱此错误 我的代码: 错误在线上和 问题答案: 您不能使用浮点类型创建一个(或)。 您要么要将其转换为: 或者您想使用(Swift 2语法): Swift 3语法: 取决于是否需要浮点精度。请注意,如果您的上限是一个非整数值,则该版本将比范围运算符版本多迭代一次,这是因为它将忽略小数部分。

  • 问题内容: 我是新手,已经尝试了两个小时了。在我的代码下面: 错误说: 在哪里: 如果我使用错误消失了,但我的if条件始终为true。如何获得此修复程序?我已经读过了,但与我的案例(和)并不相同。 任何答案和建议都对我有帮助。提前致谢 问题答案: 您可以使用Optional Binding 解开Optional变量。

  • 我在练习一些代码,遇到了一些问题。 这是密码 所有的代码都很好,打印得很好,但是最后一行带来了一个问题。 我以为是macFood。水果是数组。 因为macFood。水果=[水果(名称:“苹果”,容量:1),水果(名称:“香蕉”,容量:2)]工作。 所以我想我可以使用'='运算符添加另一个元素。 但它在最后一行崩溃了,macFood。水果=[水果(名称:“葡萄”,容量:3)] 错误消息为 “二进制运

  • 问题内容: 在尝试在Swift 3中执行此代码块时,我遇到了错误:二进制运算符’/’无法应用于两个’Double’操作数 但这有效 为什么第一段代码不起作用? 问题答案: 该错误有点误导。 在第一组代码中,被隐式声明为的数组。因此,任何将值分配给索引的尝试都将需要一个值。 问题在于结果是值,而不是。因此,编译器正在寻找返回的版本。该版本需要两个参数。由于您提供两个参数,因此您会遇到问题中提到的错误

  • 二进制运算符' (字符串?)是什么类型?

  • 我试图通过UISearchBar在UITableView上搜索用户。问题是,当我尝试时,错误不断出现。 这是我的代码: 我正在尝试通过Firebase fetch在我的应用程序中搜索用户。我已经将用户带到了UITableView上,问题是我无法搜索特定的用户。请帮忙!我什么都试过了。