![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 8
|
Почему выражение
принимает значение "false", даже если "n" равно целым чётным числам (2,4,6...).
Пример кода наглядно это демонстрирующего: |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
У флеша есть погрешность при сложении дробных чисел не кратных (0.5, 0.25, 0.125, 0.0625 и тд).
Поэтому со временем накапливается ошибка при сложении. И реально, при многократном вызове n+=0.2, вместо 4 оказывается число 4.000000000000000888178419700125 Вторая проблема заключается в том, что при таком малом значении дробной части, в трейс выводится только целая часть, что может вызывать кучу проблем и вопросов, вроде сраниваем а получается, что 4 не равно 4. Увидеть данную проблему можно так: |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 8
|
Спасибо огромное за адекватный и развёрнутый ответ!
В принципе я что то подобное подозревал, а есть ли тогда еще какой способ проверки числа на кратность другому, любому числу. Допустим у меня есть переменная-счетчик "x += n" (где n - любое число), и мне нужно отслеживать кратность "x" чилсу "y". Пример: Заранее спасибо. Последний раз редактировалось burdich; 27.04.2008 в 13:43. |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 8
|
Точно, смотреть по остатку. Спасибо еще раз, я думаю это пригодиться не только мне.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|