• # vive les nombres flottants

    Posté par . En réponse au message bug dans php, nombre mal tronqué. Évalué à 2.

    comme expliqué dans : http://www.nexen.net/docs/php/annotee/warn.float-precision.p(...)
    tu devrais utiliser la bibliothèque GMP (si tu le peux...)

    il faut savoir par exemple que multiplier par 10 et diviser par 0.1 ne donnent pas le même résultat.

    Si dans ton cas $randvalb vaut -1, tu vas diviser par $div qui vaudra presque 0.1 mais pas exactement car ce nombre a un nombre infini de chiffres après la virgule en base 2. Donc au final tu vas multiplier par un ***flottant*** qui vaut ***presque*** 10 alors que tu aurais pu multiplier par un ***entier*** qui vaut ***exactement*** 10.

    Donc à part pouvoir utiliser une bibliothèque de calcul exact type BC ou GMP (c'est pour ça qu'elles utilisent des chaînes de caractères comme représentation des nombres), tu retrouveras toujours ces problèmes inhérent à la représentation des nombres.