将整数乘以double并将结果存储为double

时间:2015-02-07 06:43:25

标签: ios swift swift-playground

出于好奇心,快速地说:

var a:Double = 3.5
var b:Int = 4
var c = a * Double(b)
var d:Double = a * b

为什么d无效,但c是?由于我指定d是双精度型,编译器是否应该检测到b应该被转换为double?

2 个答案:

答案 0 :(得分:3)

在Swift中,您必须明确转换类型,而不是强制转换类型。 See the document

  

由于每种数字类型都可以存储不同的值范围,因此您必须根据具体情况选择加入数字类型转换。这种选择加入方法可以防止隐藏的转换错误,并有助于在代码中明确显示类型转换意图。

如果您有b:Int,可以Double(b),因为它从Int转换为Double,但您不能b as Double或{ {1}}因为它正在投射。

至于c: Double = b,问题是没有var d:Double = a * b运算符实现接受*Double作为操作数并返回Int

如果需要,可以实现重载运算符:

Double

但我不建议这样做。您应该执行明确的转换

答案 1 :(得分:0)

除非在非常精确的情况下,否则Swift不会进行自动类型转换,因此,在混合算术类型时,您必须明确处理转换。