Nombres à virgule

Représentation approximative des réels

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)^n0,50,250,1250,06250,031250,0156250,00781250,00390125
n = 12345678

Questions

  1. Vérifier que 0,5625 est dyadique
  2. 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

  3. 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

  4. 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

  5. Pourquoi la fonction suivante est incorrecte ?

    
    def sontColineaires(xU,yU,xV,yV):
        return xU*yV - yU*xV == 0
    
    
  6. Comment la corriger ?