• [^] # Re: C'est bien une erreur de la part de l'utilisateur !

    Posté par . En réponse au journal [Humour] vers un monde différent. Évalué à 2.

    Dans un langage comme Haskell :

    Prelude> 2 - 1.8 - 0.2 :: Rational
    0 % 1
    Prelude> 2 - 1.8 - 0.2 
    -5.551115123125783e-17
    

    Le type de 0.0 est Fractional t => t.
    C'est à dire que les constantes numériques sont polymorphes. Par défaut dans l’interpréteur c'est une instance de Double qui est utilisée. Mais on peut forcer l'utilisation d'une autre instance avec une annotation de type.

    Petit commentaire 1 : Il faut arrêter de considérer que les float et les double sont une implémentation des nombres réels. C'est faux. Les float et les doubles n'ont littéralement aucune propriété algébrique. Vraiment aucune. Ce n'est même pas un magma (le niveau 0 de la structure algébrique).

    Petit commentaire 2 : Les nombres réels, ce sont à peu près les seuls qui n'existent pas dans la nature. Quel que soit la raison pour laquelle vous pensez devoir les utiliser, il y a fort à parier que vous avez tort. Les seuls cas d'usage légitime c'est quand on a besoin de grosses performances, et qu'on veille à éviter les opérations vraiment déconnantes.