2 swift
这是我的代码:
println(Double(2/5))
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它打印出来
0.0
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我想要它出来0.4.四舍五入有问题吗?
问题是,Double在完成两个整数之间的整数除法之前,你不会转换为a .我们来看看操作顺序.我们从内部开始向外移动.
2和整数之间执行整数除法5,从而得到整数0.0,它创建double 0.0.descriptiondouble 0.0,返回字符串"0.0"println字符串"0.0"我们可以通过在划分它们之前调用Double除法的每一侧的构造函数来解决这个问题.
println((Double(2)/Double(5)))
Run Code Online (Sandbox Code Playgroud)
现在的操作顺序是:
2为浮点数2.05为浮点数5.00.4description浮点数0.4,返回字符串"0.4".println字符串"0.4".请注意,将分区的两边都转换为非必要条件Double.
只要我们处理文字,我们就可以写println(2.0/5.0).
我们也可以逃避写作println((2 * 1.0)/5),现在应该将我们所有的文字解释为浮点(因为我们将它乘以浮点).
只要数学运算的任何一方都是浮点类型,整数文字将被Swift解释为浮点类型,但在我看来,显式转换我们的类型要好得多,这样我们就会非常清楚正是我们想要发生的事情.因此,让我们将所有数字都归入相同的类型,并明确说明我们真正想要的是什么.
如果我们处理文字,我们可以添加.0它们以强制它们作为浮点数:
println(2.0/5.0)
Run Code Online (Sandbox Code Playgroud)
如果我们使用变量,我们可以使用构造函数:
let myTwoInt: Int = 2
let myFiveInt: Int = 5
println((Double(myTwoInt)/Double(myFiveInt))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
753 次 |
| 最近记录: |