如何将以下代码从java转换为Swift,它们的结果不同。
//爪哇
int x = 100;
x -= (0.65 * 19);
System.out.println(x); // 87
//夫特
var z : Int = 100
z -= Int(0.65 * 19)
print(z) // 88
答案 0 :(得分:2)
在Java混合整数/双算术中,所有操作数
首先转换为double
。因此x
转换为double
,然后减去(0.65 * 19)
(生成87.65
),最后结果被截断为int
(结果为{ {1}})并再次分配给87
。
Swift中没有隐式类型转换。在
x
您将乘法结果截断为z -= Int(0.65 * 19)
之前从12
中扣除。
为了获得与Java相同的结果,你必须这样做 同样的转换明确:
100