Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arrondis au centième

Python

Sujet résolu
    3 avril 2020 à 22:50:44

    Bonjour, 

    Je suis en train de faire ce sujet du site france-ioi.org : http://www.france-ioi.org/algo/task.php?idChapter=650&iOrder=20

    Votre programme doit lire trois nombres décimaux : la valeur actuelle de la taxe sur les fruits et légumes (en pourcentage), la nouvelle valeur de la taxe (en pourcentage), puis le prix actuel d'un légume, taxes comprises, en euros. Il devra calculer et afficher le prix du légume avec la nouvelle valeur de la taxe, arrondi au centime près.

    J'ai réussi à faire un code (je ne sais pas s'il est bon) mais il me donne plein de 0 après la virgule alors que je ne veux seulement arrondir au centime. 

    Voici mon code : 

    from math import *
    
    taxe = float(input())
    newTaxe = float(input())
    prixTTC = float(input())
    
    prixHT = round(prixTTC - round(prixTTC * (taxe / 100),2),2)
    newPrix = round(prixHT * (1 + newTaxe / 100),2) 
    
    print(newPrix)

    L'un de vous aurait une solution, s'il-vous plaît ?

    Merci d'avance, 

    Cordialement,

    Romain.

    -
    Edité par Romainj78 4 avril 2020 à 17:29:29

    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2022 à 16:53:17 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


        16 juin 2022 à 17:11:35

        Bonjour.

        Perso, je n'ai pas le phénomène que tu décris lorsque j'exécute ton code :

        10
        20.6
        56.2
        61.0
        >>> 


        Edit : Par contre, tu n'as pas besoin d'importer le module math.

        -
        Edité par PB68 16 juin 2022 à 17:14:17

        • Partager sur Facebook
        • Partager sur Twitter

        PB68

          16 juin 2022 à 19:02:11

          Si on veut exactement 2 chiffres après la virgule:
          -
          >>> v=23.304                                                                                                            
          >>> v                                                                                                                   
          23.304                                                                                                                  
          >>> round(v,2)                                                                                                          
          23.3                                                                                                                    
          >>> n=int(v*100)    # Icci, j'aurais dû écrire  n=int(v*100+0.5)                                                                                                       
          >>> n                                                                                                                   
          2330                                                                                                                    
          >>> str(n//100)+","+str(n%100+100)[-2:]                                                                                 
          '23,30'

          -
          Edité par PierrotLeFou 16 juin 2022 à 19:07:11

          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            16 juin 2022 à 22:44:21

            Romainj78 a écrit:

            L'un de vous aurait une solution, s'il-vous plaît ?


            Un nombre arrondi reste un nombre et les 0 qui sont superflus dans la partie décimale sont ignorés.

            Pour les afficher, il faut les convertir en chaîne de caractères où on peut préciser "je veux 2 décimales même si ce sont des 0':

            >>> format (3.206, '.02f')
            '3.21'
            >>> format (3.202, '.02f')
            '3.20'

            et en plus ça a le bout goût d'arrondir...

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              16 juin 2022 à 23:24:34

              Plus contemporain : 

              >>> f'{3.259:.2f}'
              '3.26'
              • Partager sur Facebook
              • Partager sur Twitter
                17 juin 2022 à 9:30:04

                Plus vintage:

                >>> '%.02f' % 3.206
                '3.21'

                la méthode utilisée pour transformer le nombre en chaîne de caractères importe peu.

                • Partager sur Facebook
                • Partager sur Twitter
                  17 juin 2022 à 10:48:31

                  Finalement, le posteur aura eu sa réponse 2 ans après avoir posté :lol:
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 juin 2022 à 18:29:31

                    Avec de la chance, il va la voir, il était actif au 7 juin.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le Tout est souvent plus grand que la somme de ses parties.

                      17 juillet 2022 à 20:26:12

                      ahah, merci pour vos réponses !

                      oui depuis le temps j'avais trouvé une solution ^^ ça me fait rire de retomber sur ce type de questions que je me posais à mes débuts tandis qu'aujourd'hui c'est une formalité :)

                      bonne journée à tous

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Arrondis au centième

                      × 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