Forum général.général Précision étrange de dc

Posté par  (site web personnel) .
Étiquettes : aucune
0
9
jan.
2009
Bonjour les gens, j'ai une petite question à deux sous :

cho7@cho7land:~$ dc -e "2k 100 400 620 / 100 * - p"
36.00

cho7@cho7land:~$ dc -e "3k 100 400 620 / 100 * - p"
35.500

cho7@cho7land:~$ dc -e "4k 100 400 620 / 100 * - p"
35.4900

cho7@cho7land:~$ dc -e "5k 100 400 620 / 100 * - p"
35.48400

Comment dc réalise-t-il ses arrondis ? Car je souhaite une précision de deux chiffres après la virgule, mais quand je fais ça il m'arrondit tout au dessus ! Si je pousse la précision, alors il commence à afficher ce que je veux...

Si quelqu'un à une idée !

Merci.
  • # calcul simple

    Posté par  (site web personnel) . Évalué à 1.

    je connait pas trop dc donc j'ai essayé un calcul simple:

    $ dc -e "400 620 / p"
    0
    $ dc -e "2k 400 620 / p"
    .64
    $ dc -e "3k 400 620 / p"
    .645
    $ dc -e "4k 400 620 / p"
    .6451
    $ dc -e "5k 400 620 / p"
    .64516

    Déjà ça ne ressemble pas trop a des arrondis tout ça, les résultats auraient dût être 1, 0.65, 0,645, 06452.
    • [^] # Re: calcul simple

      Posté par  . Évalué à 3.

      > Déjà ça ne ressemble pas trop a des arrondis tout ça, les résultats auraient dût être 1, 0.65, 0,645, 06452.

      nk demande de faire les calculs juque la nième décimal. Pour faire l'arrondi, il faut faire plus... Ce que ne fait pas dc.
      nk n'est pas la précision d'affichage, mais de calcul.
  • # Troncature

    Posté par  (site web personnel) . Évalué à 2.

    Faut croire qu'il tronque les valeurs, ce ne sont pas des arrondis...
    • [^] # Re: Troncature

      Posté par  (site web personnel) . Évalué à 1.

      oui peut-être, cf mon message du dessous que j'ai mal rattaché à celui juste au dessus :)
  • # man

    Posté par  (site web personnel) . Évalué à 2.

    Bah dans le man on peut lire :


    k Pops the value off the top of the stack and uses it to set the
    precision.

    Précision, c'est différent de arrondi ? Auquel cas peut-être que dc ne gère pas les arrondis, tout simplement :-/
    • [^] # Re: man

      Posté par  (site web personnel) . Évalué à 2.

      Une idée :

      [pterjan@plop perl-install]$ dc -e "2k 100 400 620 / 100 * - p"
      36.00
      [pterjan@plop perl-install]$ dc -e "2k 100 400 100 * 620 / - p"
      35.49

      Tu a sréduit la précision sur les calculs intermediaires aussi, donc le resultat de 400 620 / est tronqué et quand tu multiplies par 100 ensuite c'est trop tard
    • [^] # Re: man

      Posté par  . Évalué à 2.

      > Auquel cas peut-être que dc ne gère pas les arrondis, tout simplement :-/

      dc ne le fait pas. bc non plus.
      • [^] # Re: man

        Posté par  . Évalué à 2.

        bc -l fait les calculs avec des arrondis.
        • [^] # Re: man

          Posté par  . Évalué à 2.

          Euh, j'ai mal lu.
          En fait, dans bc, c'est la variable scale (mise automagiquement à 20 avec -l) qui correspond à la précision, et y a pas d'arrondi non plus. Désolé d'avoir pollué.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.