我有检查变量elapsedTime(double)是0.4的倍数的代码。即0.4,.0.8,1.2,1.6等等代码检查像这样:Swift%无法正确计算
let roundedInterval = Double(round(timeInterval*10)/10) //(this is 0.4)
let roundedActualElapsedTime = Double(round(actualElapsedTime*10)/10)
if roundedActualElapsedTime%roundedInterval == 0 {
print(“is a multiple of 0.4”)
}
从我的结果输出0.4,0.8,1.6
然而,3.2被报道为倍数,因此它缺少的值。任何想法我可能在这里做错了吗?
注:roundedTimeInterval 0.4保持恒定,roundedActualElapsedTime增量在0.1秒即0.1,0.2,0.3,0.4 ...等
什么是你的一个时间间隔,并actualElapsedTime例如? – aaisataev
@aaisataev编辑了问题 – KexAri
请参阅[浮点数学是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken):'0.4' *不能*完全表示为一个二进制浮点数。 –