C'est un bug que j'ai decouvert il y a quelques années de cela, mais jusqu' aujourd'hui, je vois des gens qui se battent avec ça.
Pour comprendre, essayez ce bout de code:
class Test
{
    static function main()
    {
        var i = 0.0;
        flash.Lib.current.onEnterFrame = function()
        {
            i += 0.01;
            trace( i );
        }
    }
}
C'est un bout de code haXe, mais le principe est d'ajouter 0.01 � un nombre dans une boucle.
Vous allez voir quelque chose comme ça, dans la fenêtre de sortie:
0.01
0.02
0.03
...
0.78
0.79
0.8000000000000001
0.81
0.82
0.83
0.8400000000000001
0.8500000000000001
0.86
...
Je ne sais pas pourquoi, mais quand vous connaissez ce bug, vous comprenez, peut etre, certains comportements suspets de vos anciens SWF.
C'est également une bonne raison de faire attention aux tests comme if ( a == b ){...} que vous avez tout interêt � remplacer par quelque chose comme if ( Math.abs( a - b ) < limit ){...}, ou limit est proche de 0... pour eviter de vous arracher les cheveux :)
Comme le dit Mickro dans le commentaire, ceci se produit avec la plupart de langages en fait. Mieux vaut travailler donc avec des entiers et les transformer en decimaux � la fin.