|
Olivier Auverlot |
|
|
Bonjour à tous,
Je cherche une méthode dans Pharo pour fixer le nombre de chiffres après la virgule. Suite à une division. j'ai besoin que mon résultat soit arrondi et retourné avec seulement deux décimales. ça me semblait simple mais je ne trouve rien qui fasse l'affaire. une idée ? Merci d'avance Olivier ;-) www.auverlot.fr |
|
sebastien audier |
|
|
Salut Olivier, voici une solution: (4.567786 asScaledDecimal: 2) --> 4.57 Attention, cette méthode arrondie bien évidement... Si tu souhaite obtenir un résultat similaire sans arrondir, tu peux utiliser ceci: (4.567786 asString) truncate: 4 --> 4.56 J'espère avoir réussi à t'aider. Bonne continuation... -- Sébastien AUDIER ObjectFusion S.A.R.L. Applications web, consulting, design http://www.objectfusion.fr |
|
Olivier Auverlot |
|
|
Merci Sébastien pour cette réponse rapide.
J'ai testé la première méthode que tu me propose car j'ai besoin en effet d'arrondir le chiffre. Avec Pharo (1.1.1), la méthode asScaledDecimal fonctionne mais elle me retourne la valeur 4.57s2 (que signifie s2 ?) Plus étrange encore, dans le workspace, le code suivant ne me retourne pas 4.67 mais 4.667786 (???) | v | v := 4.567786 asScaledDecimal: 2. Transcript show: (v + 0.1) Je me sens un peu perdu... Olivier ;-) www.auverlot.fr
|
|
sebastien audier |
|
|
Je ne suis pas un expert en arithmétic, mais le "s2" est dû à l'object de la classe ScaleDecimal, une solution temporaire mais pas très élégante à mes yeux: (un mix des deux) | v | v := ((4.567786 asScaledDecimal: 2) asString truncate: 4) asNumber. Transcript show: (v + 0.1) ps; je maintiens que cette solution n'est pas très élégante... J'espère que les autres viendront en proposer une meilleur. -- Sébastien AUDIER ObjectFusion S.A.R.L. Applications web, consulting, design http://www.objectfusion.fr |
|
Cédrick Béler |
|
|
In reply to this post by Olivier Auverlot
<base href="x-msg://9/">Bonsoir,
Juste pour l'affichage: 1.22222 printShowingDecimalPlaces: 2 '1.22' Sinon, pour arrondir: 1.22222 roundDownTo: 0.01 -> 1.22 1.22222 roundUpTo: 0.01 - > 1.23 Bon we ;) Cédrick Le 25 févr. 2011 à 22:36, Olivier Auverlot a écrit :
|
|
Alexandre Jasmin |
|
|
In reply to this post by Olivier Auverlot
> Je cherche une méthode dans Pharo pour fixer le nombre de chiffres après la
> virgule. Suite à une division. j'ai besoin que mon résultat soit arrondi et > retourné avec seulement deux décimales. > Peut-être `printShowingDecimalPlaces: 2` Je viens de remarqué cette méthode dans le protocole de "Number". Elle semble convenir, mais je peux me tromper. |
|
Pottier Bernard |
|
|
In reply to this post by Olivier Auverlot
Le 25/02/2011 23:12, Olivier Auverlot a écrit :
Merci Sébastien pour cette réponse rapide. Bonjour, Pour résumer: 1.0 est un Float 1.0000001d est un Double. 1.01s est un FixedPoint (ScaledDecimal ici, je suppose). Un FixedPoint est une Fraction accompagnée d'un nombre de chiffres significatifs après la virgule, utilisé pour la lecture du nombre. Les calculs en FixedPoint sont exacts (les banques aiment cela). Quand on additionne les nombres entre eux, il y a des conversions implicites. Le flottant 'mange' les bonnes propriétés des FixedPoint. Ce qui explique le résultat obtenu dans vos calculs. Mettre un 's' à la fin de l'opérande flottant et cela va s'arranger. Petits exemples, en direct de mon workspace (VW).. Bien cordialement B.Pottier www.auverlot.fr |
|
Olivier Auverlot |
|
|
Merci à tous pour votre aide :-)
Olivier
Le 26 févr. 2011 à 11:33, Pottier Bernard a écrit :
|
| Powered by Nabble | See how NAML generates this page |