Partage
  • Partager sur Facebook
  • Partager sur Twitter

WTF 12-11.2 != 0.8

    14 janvier 2015 à 0:18:46

    on pourrait tu m'expliquais pourquoi ça donne pas 0.8???

    12-11.2

    ca me donne 0.8000000000000007??????

    -
    Edité par Lachances1 14 janvier 2015 à 0:19:04

    • Partager sur Facebook
    • Partager sur Twitter
      14 janvier 2015 à 8:06:02

      Hé oui, c'est la dur vérité des mathématiques, tout ce qu'on t'a appris à l'école est faux :lol:

      En fait, c'est le comportement du système binaire qui fait ça, je te passe les détails, mais si tu veux faire une soustraction précise tu fais comme ceci : 

      >>> from decimal import Decimal, getcontext
      >>> Decimal(1) - Decimal(0.8)
      Decimal('0.1999999999999999555910790150')
      >>> getcontext().prec = 3
      >>> Decimal(1) - Decimal(0.8)
      Decimal('0.200')
      >>> float(Decimal(1) - Decimal(0.8))
      0.2
      
      #Stackoverflow



      -
      Edité par InhumanRampage 14 janvier 2015 à 8:11:25

      • Partager sur Facebook
      • Partager sur Twitter
        14 janvier 2015 à 9:13:21

        Salut, il existe aussi une fonction round(x, [ndigits])

        >>> x = round((12 - 11.2), 2)
        >>> x
        0.8
        >>> x * 2
        1.6

        Je crois qu'il y a un bon tuto sur la représentation informatique des décimaux sur OCR, mais je ne le retrouve pas

        EDIT :  voir la doc Python à ce sujet 

        -
        Edité par noobien 14 janvier 2015 à 9:44:25

        • Partager sur Facebook
        • Partager sur Twitter
          14 janvier 2015 à 9:51:46

          InhumanRampage a écrit:

          Hé oui, c'est la dur vérité des mathématiques, tout ce qu'on t'a appris à l'école est faux :lol:

          En fait, c'est le comportement du système binaire qui fait ça, je te passe les détails, mais si tu veux faire une soustraction précise tu fais comme ceci : 

          >>> from decimal import Decimal, getcontext
          >>> Decimal(1) - Decimal(0.8)
          Decimal('0.1999999999999999555910790150')
          >>> getcontext().prec = 3
          >>> Decimal(1) - Decimal(0.8)
          Decimal('0.200')
          >>> float(Decimal(1) - Decimal(0.8))
          0.2
          
          #Stackoverflow



          Ou même, sans se soucier de la précision:

          Decimal('1') - Decimal('0.8')
          • Partager sur Facebook
          • Partager sur Twitter

          WTF 12-11.2 != 0.8

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown