这是我的代码:
当我运行这段代码时,它会打印出以下内容:
我该怎么解决这个问题?我希望结果显示为
println(Double(2/5))
当我运行这段代码时,它会打印出以下内容:
0.0
我该怎么解决这个问题?我希望结果显示为
0.4
。是四舍五入出了问题吗?println(Double(2/5))
0.0
0.4
。是四舍五入出了问题吗?Double
。让我们看一下运算顺序。我们从内部开始向外移动。
2
和整数5
之间执行整数除法,得到整数0
。0
创建一个Double
,得到0.0
。0.0
上的description
,返回字符串"0.0"
"0.0"
上调用println
Double
构造函数来解决这个问题。println((Double(2)/Double(5)))
2
转换为浮点数2.0
5
转换为浮点数5.0
0.4
0.4
上调用description
,返回字符串"0.4"
"0.4"
上调用println
请注意,并不严格需要将除法的两边都转换为Double
类型。
只要我们正在处理字面值,就可以直接写成println(2.0/5.0)
。
我们还可以写成println((2 * 1.0)/5)
,这会把所有的字面值解释为浮点数(因为我们已经将其乘以浮点数)。
只要运算的一侧是浮点数类型,Swift 就会将整数字面值解释为浮点数类型。但我认为最好明确地转换我们的类型,这样我们就可以清楚地说明我们想要发生什么。因此,让我们将所有的数字都放入相同的类型中,并明确地说明我们想要什么。
如果我们正在处理字面值,我们可以添加.0
来将它们强制转换为浮点数:
println(2.0/5.0)
如果我们要处理变量,可以使用构造函数:
let myTwoInt: Int = 2
let myFiveInt: Int = 5
println((Double(myTwoInt)/Double(myFiveInt))
print(2.0 / 5.0)