gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:45:31 24 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) ,它现在应该将所有文字解释为浮点(因为我们已将其乘以浮点) .

只要数学运算的任一侧都是浮点类型,整数文字就会被 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/56180476/

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