Nombre de chiffres après la virgule

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Nombre de chiffres après la virgule

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
Reply | Threaded
Open this post in threaded view
|

Re: Nombre de chiffres après la virgule

sebastien audier

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.



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
Reply | Threaded
Open this post in threaded view
|

Re: Nombre de chiffres après la virgule

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

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.



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

Reply | Threaded
Open this post in threaded view
|

Re: Nombre de chiffres après la virgule

sebastien audier

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 ?)


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)

 
Si tu as d'autres soucis, n'hésite pas...

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
Reply | Threaded
Open this post in threaded view
|

Re: Nombre de chiffres après la virgule

cedreek
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 :

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

Reply | Threaded
Open this post in threaded view
|

Re: Nombre de chiffres après la virgule

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.
Reply | Threaded
Open this post in threaded view
|

(Number) Re: Nombre de chiffres après la virgule

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.

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 ;-)

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

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.



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



arith.st (389 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: (Number) Re: Nombre de chiffres après la virgule

Olivier Auverlot
Merci à tous pour votre aide :-)

Olivier

Le 26 févr. 2011 à 11:33, Pottier Bernard a écrit :

Le 25/02/2011 23:12, Olivier Auverlot a écrit :
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 ;-)

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

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.



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


<arith.st>