Возникла необходимость проверять число на кратность 0.05 и в программе появились чудные ошибки... Решил разобраться и оказалось, что дело в элементарных функциях Mod() IsInt(), начал их тестировать...
Т.е. в этом случае функция mod() должна вернуть 0, но я удивился, когда функция вернула 0.0499999999999995 - с чего это вдруг!? 5.05 делится на 0.05 идеально и без остатка! Очень не люблю я такое, когда очевидный ответ должен быть, но простецкая функция по непонятной причине возвращает полный бред... Недолго думая, я решил сделать аналог через IsInt()...
И что же... Функция isint() возвращает 0! Серьезно?! 5.05 / 0.05 = 101 и это дробь!? Это целое число и функция обязана вернуть 1!
Почему так происходит? Я с такими глюками скоро сума сойду!
Код:
mod(5.05, 0.05)
Т.е. в этом случае функция mod() должна вернуть 0, но я удивился, когда функция вернула 0.0499999999999995 - с чего это вдруг!? 5.05 делится на 0.05 идеально и без остатка! Очень не люблю я такое, когда очевидный ответ должен быть, но простецкая функция по непонятной причине возвращает полный бред... Недолго думая, я решил сделать аналог через IsInt()...
Код:
isint(5.05 / 0.05)
И что же... Функция isint() возвращает 0! Серьезно?! 5.05 / 0.05 = 101 и это дробь!? Это целое число и функция обязана вернуть 1!
Почему так происходит? Я с такими глюками скоро сума сойду!