swift - 为什么 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)
尽管我非常具体,但这也不起作用。我一定很快忘记了这些算术运算符的一些基本知识。
解决方案
当您将 anInt
除以 anInt
时,结果将向下舍入。使用浮点类型,例如Double
或Float
以获得更高的精度。
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
。
推荐阅读
- c# - 我的一些按钮单击按钮在 C# for Wpf 中不起作用
- javascript - 有没有办法在其他网页中嵌入使用内容安全策略的网站?
- ios - 超过最大文本(“”)连接长度 - SwiftUI -
- scala - 外键的光滑导航问题(在joinLeft之后)
- python - 如何正交化时间序列
- swift - SwiftUI 随机但独特的元素
- reactjs - 如何防止 VS Code 在运行 nodemon 时自动切换到浏览器?
- gis - Netlogo GIS Extension 将多边形特征复制到补丁转换错误
- java - Java 策略最小值-最大值
- c# - HttpClient Header 在 ASP.NET Core 中具有 Request-Id