Интересный вопрос (цикл for)
Делаем цикл:
for (var i = 8; i<=10; i += 0.1) { trace(i); } На выходе: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 9.1 9.2 9.3 9.4 9.49999999999999 9.59999999999999 9.69999999999999 9.79999999999999 9.89999999999999 9.99999999999999 ПОЧЕМУ??? Я всегда думал что 9.4+0.1=9.5, а не 9.49999999999999 |
да, есть такие глюки в мат части :(
насколько я понимаю, с этим никак не побороться.. надо учитывать что это есть |
Код:
a = 4; |
А вот так - еще веселее :D
Код:
for (var i = 8; i<=10; i += 1e-3) { |
да ладно, чо вы обижаете флеш, будто это его баги
протрейсети это в других апликухах, это баг процесора, и он вылазит под любым языком |
я помню что это как то объясняется тока не помню как :)
давно слышал |
в калькуляторах точно так же
корень 0.99999999..... ровняется себе или я что то не понял ? |
вся фишка в том что проц все операции производит в двоичной системе, а дробное число точно перевести в двоичную систему нельзя - можно лишь с заданной точностью.
Например 0.1 (с точностью десять разрядов)= 0.0001100110 а теперь если перевести обратно то 0.0001100110 = 0.99609375 |
это хорошее и логичное объяснение.
только это не объясняет почему в плеере этот глюк вылезает настолько фрагментарно :) Код:
for (var i=-6; i<10; i+=.1) { |
Интересно, что думает по этому поводу Macromedia ???
|
Часовой пояс GMT +4, время: 11:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.