• [^] # Re: Rien de surprenant

    Posté par . En réponse au journal [Humour] vers un monde différent. Évalué à 5. Dernière modification le 20 décembre 2017 à 12:31.

    Je me dis aussi que vu que Python le fait déjà dans un autre cas

    C'est pas tout à fait cela, il a changé la sémantique d'un de ces opérateurs sur les int, à savoir l'opérateur /, qui avant calculait le quotient euclidien et qui maintenant calcule la division dans le type float (ce qui ne change pas les problèmes d'arrondis et l'impossibilité d'avoir une représentation finie en base 2 pour certaines fractions).

    Si tu veux calculer formellement sur des fractions en python, il faut utiliser le module fractions.

    >>> from fractions import Fraction
    >>> # attention à bien utiliser des strings
    ... Fraction('2') - Fraction('1.8') - Fraction('0.2')
    Fraction(0, 1)
    >>> Fraction('3') * Fraction('5/3')
    Fraction(5, 1)
    >>> # avec les floats ça posera aussi problème
    ... Fraction(2) - Fraction(1.8) - Fraction(0.2)
    Fraction(-1, 18014398509481984)

    Pour avoir un jour un tel comportement par défaut, j'en doute : les besoins en calcul formel sur ce type de nombres sont trop rares (application de niche) pour en faire le comportement par défaut.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.