gpt4 book ai didi

swift - 除法在 Swift 中无法正常工作

转载 作者:可可西里 更新时间:2023-10-31 23:56:34 25 4
gpt4 key购买 nike

这是我的代码:

println(Double(2/5))

当我运行它时,它会打印出来

0.0

我该如何解决这个问题?我希望它达到 0.4。四舍五入有问题吗?

最佳答案

问题是在完成两个整数之间的整数除法之前,您不会转换为 Double。让我们看一下操作顺序。我们从内部开始向外移动。

  • 在整数 2 和整数 5 之间执行整数除法,得到整数 0
  • 从整数 0 创建一个 double ,这将创建 double 0.0
  • 在 double 0.0 上调用 description,返回字符串 "0.0"
  • 在字符串"0.0"上调用println

我们可以通过在除法的每一侧调用Double 构造函数来解决这个问题。

println((Double(2)/Double(5)))

现在的操作顺序是:

  • 将整数2转换为 float 2.0
  • 将整数5转换为 float 5.0
  • 在这些 float 之间执行浮点除法,得到 0.4
  • 对 float 0.4调用description,返回字符串"0.4"
  • 在字符串 "0.4" 上调用 println

请注意,将除法的两边都转换为 Double 并不是绝对必要的。

只要我们处理文字,我们就可以编写 println(2.0/5.0)

我们也可以编写 println((2 * 1.0)/5) 现在应该将我们所有的文字解释为 float (因为我们已经将它乘以一个 float ) .

只要数学运算的两边是浮点类型,整数文字就会被 Swift 解释为浮点类型,但在我看来,显式转换我们的类型要好得多,这样我们非常清楚我们想要发生什么。因此,让我们将所有数字放入同一类型,并明确说明我们真正想要的是什么。


如果我们正在处理文字,我们可以向它们添加 .0 以强制它们作为 float :

println(2.0/5.0)

如果我们要处理变量,我们可以使用构造函数:

let myTwoInt: Int = 2
let myFiveInt: Int = 5

println((Double(myTwoInt)/Double(myFiveInt))

关于swift - 除法在 Swift 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29333842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com