У меня есть код, который проверяет, является ли переменная 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 и т.д. ...
, что ваша TimeInterval и actualElapsedTime, например? – aaisataev
@aaisataev Редактировать вопрос – KexAri
См. [Является ли математика с плавающей запятой?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken): '0,4' * не может быть представлен точно так же двоичное число с плавающей запятой. –