为什么在 swift 中 x != 0 时 x / 100 == 0?

Why is x / 100 == 0 when x != 0 in swift?

我创建了一个 for 循环,我在其中计算了一些值。

for i in 1...100{
  let xValue = i/100
  print(xValue) // returns 0 every time except when i == 100
}

这是对 for 循环的一部分的重新创建。为什么我没有得到 'xValue' 的正确值?

有关信息,我还尝试了以下方法:

let xValue: Float = Float(i/100)

这也不管用,尽管我非常具体。我一定是忘记了这些算术的一些基本知识 swift.

中的运算符

当您将 Int 除以 Int 时,结果将 向下舍入 。使用浮点类型,如 DoubleFloat 以获得更高的精度。

for i in 1...100 {
  let xValue = Float(i)/100
  print(xValue)
}

解决您尝试的解决方案 - 当您这样做时:

let xValue: Float = Float(i/100)

Int 结果首先在 i/100 中计算(并向下舍入为 0),然后您将转换为 Float。 因此,我们在除法之前将 i 转换为 Float,因此结果计算为 Float.

由于i100都是整数值,/将进行整数除法,结果将被截断为0。

即使你let xValue: Float = Float(i/100),括号内的除法结果在值可以转换为Float之前已经被截断为0。

在除法之前将i转换为浮点值以防止结果被截断。

for i in 1...100{
  let xValue = Float(i)/100
  print(xValue)
}