首页 > 解决方案 > 为什么 x / 100 == 0 当 x != 0 迅速?

问题描述

我创建了一个 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)

尽管我非常具体,但这也不起作用。我一定很快忘记了这些算术运算符的一些基本知识。

标签: swiftfor-loopmathoperatorsdivision

解决方案


当您将 anInt除以 anInt时,结果将向下舍入。使用浮点类型,例如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转换为 a Float,因此结果被计算为 a Float


推荐阅读