Page 3 sur 3

Publié : ven. 29/mai/2009 19:29
par Backup
djes a écrit :
Dobro a écrit :purée !!

normal , A est un entier !!
donc 5.9999 , c'est un arrondi en fait !! :)

bon je retourne dans les doc sur Tahiti moi :)
:lol:
C'est pas ça du tout, mais bon! mdr!
vas y explique, je fatigue ! 8O

c'est bien que A va recevoir 6 au lieu de 5,9999999 non ?

Publié : ven. 29/mai/2009 21:35
par djes
Essaye ça :lol:

Code : Tout sélectionner

Debug 5.9999999999999994
Debug 5.9999999999999995

Publié : sam. 30/mai/2009 3:36
par Backup
plus assez de bit pour garder les chiffres apres la virgule ?... 8O

Code : Tout sélectionner

Debug 5.9999999999999994
Debug 5.9999999999999995
Debug ""
Debug ""
Debug Bin(5.9999999999999994)
Debug Bin(5.9999999999999995)
Debug ""
Debug "si < 10 , mieux vaux faire "
Debug Hex(5.9999999999999994)
Debug Hex(5.9999999999999995)

Publié : sam. 30/mai/2009 9:36
par djes
C'est un peu compliqué à expliquer ; tu as une très bonne wiki là dessus : http://fr.wikipedia.org/wiki/Virgule_flottante, et là http://fr.wikipedia.org/wiki/IEEE_754 (je préfère la version anglaise http://en.wikipedia.org/wiki/IEEE_754-1985) ; voir aussi les liens http://babbage.cs.qc.edu/IEEE-754/Decimal.html (essaye 5.9999999999999995) , et le cours en PDF qui donne le détail http://hal.inria.fr/inria-00071477

En gros, les types normalisés utilisés par les ordinateurs pour représenter les nombres à virgule flottante ont leurs limites. Quand tu écris des nombres, l'interpréteur les convertit en binaire. Comme ceux-là ne peuvent être représentés avec la formule normalisée (voir ci-dessus), il sont arrondis. Il faut le savoir et en tenir compte. (ce n'est pas spécifique à PB)

Ca peut être gênant pour sa comptabilité, ou pour la 3D. Ainsi, dans les rotations, on cumule souvent de petits angles. Au bout de plusieurs millions de rotations, il y a un écart très significatif ! Alors il faut soit augmenter la précision (tu comprends pourquoi j'ai été content de voir arriver les .d!), soit utiliser d'autres trucs.

Publié : sam. 30/mai/2009 13:32
par Backup
oui en clair c'est le fameux test d'hebdogiciel

elever 20 fois 2 a la puissance 2

puis faire 20 fois la racine , on ne retombe pas sur 2

c'etait un test d'hebdogiciel poiur savoir si l'on avait
un ordinateur précis ou pas !! le TI99/4A faisait parti des plus précis (premier vrais 16 bits oblige );)

Publié : lun. 01/juin/2009 13:07
par Le Soldat Inconnu
non, en fait, c'est que dépasse la résolution maximum d'un flottant.

Donc ta valeur mis dans ton float est arrondi avant de pourvoir la stocké dans le format float.

Faire

Float.f = 5.99999999999999999999999999999999

c'est un peu comme si on essayait de rentrer la valeur 8go dans un long
ça ne rentre pas

Publié : lun. 01/juin/2009 13:11
par djes
Le Soldat Inconnu a écrit :non, en fait, c'est que dépasse la résolution maximum d'un flottant.

Donc ta valeur mis dans ton float est arrondi avant de pourvoir la stocké dans le format float.

Faire

Float.f = 5.99999999999999999999999999999999

c'est un peu comme si on essayait de rentrer la valeur 8go dans un long
ça ne rentre pas
C'est ce qu'on a dit, Dobro et moi, en d'autres termes...