Le codage des nombres à virgules suit une norme bien précise la norme IEEE 751 qui n'est pas au programme
Il s'agit seulement de bien comprendre que certains nombres ne sont pas dyadiques et que par conséquent leur représentation en machine étant tronquée cela peut conduire à des calculs faux si on n'y prend pas garde
Voici les premières puissances de 0,5
(0,5)^n | 0,5 | 0,25 | 0,125 | 0,0625 | 0,03125 | 0,015625 | 0,0078125 | 0,00390125 |
---|---|---|---|---|---|---|---|---|
n = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
La plus grande puissance de 0,5 contenue dans 0,1 est (0,5)^4 = 0,0625
Compléter 0,1 = (0,5)^4 + reste
Chercher la plus grande puissance de 0,5 contenue dans le reste
En déduire que 0,1 = (0,5)^4 + (0,5)^5 + reste
Continuer et en déduire que 0,1 = (0,5)^4 + (0,5)^5 + (0,5)^8 + (0,5)^9+ reste
En déduire que ce développement est périodique et que 0,1 = 0,1001100110011...... en binaire
Pourquoi la fonction suivante est incorrecte ?
def sontColineaires(xU,yU,xV,yV):
return xU*yV - yU*xV == 0