Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction round à améliorer ?

par exemple, round(5.0001, 3) = 5.0

Sujet résolu
    29 mars 2020 à 16:06:05

    Bonjour le monde !

    La fonction round() de python se paierait une mauvaise note en physique, et même en maths : si on veut trois décimales, il faut 5.000. Or la fonction round de python donne 5.0. Avant d'écrire une fonction qui remédie, j'aimerais savoir s'il n'y a pas une solution déjà existant. J'ai regardé la doc : round() ne prend qu'un argument, le nombre de décimales. Si j'ai bien compris, pas d'options. Quelqu'un a-t-il la réponse ?

    Quelle différence entre 5.0 et 5.000 me direz-vous. La voici : 5.0 est bien moins précis que 5.000. 5.0 appartient à [4.5, 5.5[, tandis que 5.000 appartient à [4.995, 5.005[

    Sinon, j'ai découvert ça, et je partage : différence entre int() et floor(). int(), ce n'est pas la fonction partie entière généralement notée E en maths. La vraie partie entière, c'est floor. La différence concerne les nombres négatifs. Définition de E(x) : le plus petit entier inférieur à x . Or, par exemple, le plus petit entier inférieur à -4,3, c'est -5 !

    On a bien floor(-4.3) = -5. Mais int(-4,3) = -4.

    • Partager sur Facebook
    • Partager sur Twitter

    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

      29 mars 2020 à 16:14:45

      Le module Decimal ?
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        29 mars 2020 à 17:48:50

        Merci Fred ! C'est exactement ça que je voulais !
        • Partager sur Facebook
        • Partager sur Twitter

        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

          29 mars 2020 à 18:22:59

          Bonjour,

          Sujet résolu

          Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
          • Partager sur Facebook
          • Partager sur Twitter
            30 mars 2020 à 23:49:08

            zakod a écrit:

            Sinon, j'ai découvert ça, et je partage : différence entre int() et floor(). int(), ce n'est pas la fonction partie entière généralement notée E en maths. La vraie partie entière, c'est floor. La différence concerne les nombres négatifs. Définition de E(x) : le plus petit entier inférieur à x . Or, par exemple, le plus petit entier inférieur à -4,3, c'est -5 !

            On a bien floor(-4.3) = -5. Mais int(-4,3) = -4.


            Absolument, la fonction floor est la vraie fonction partie entière mathématiques. Tu obtiens plus ou moins le même résultat sans rien importer en faisant une division entière par 1 :

            >>> -4.3//1
            -5.0
            >>>
            

            Une nuance est qu'ici le type de retour est float alors que pour floor c'est int. Il y a aussi des différences vis à vis des infinis.

            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2020 à 11:52:07

              Merci Pascal. Je prends bonne note.
              • Partager sur Facebook
              • Partager sur Twitter

              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

              Fonction round à améliorer ?

              × 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