Math.Floor et Math.Ceiling et pour le reste, Math egallement
Bonjour, Existe t-il unr methode permettant d'arrondir un entier 5,99 --> 6 Ou suis je obliger de faire le traitement moi meme. Cordialement
SODELEM
Cette methode mepermet de donner l entier superieur. Si je desire avoir des nombres derieres la vrigule comme 5,359--> 5,36 comment puis je determiner les nombres derieres la virugles Cordialement
"Ambassadeur Kosh" a écrit dans le message de news: #QVpP$
Math.Floor et Math.Ceiling et pour le reste, Math egallement
> Bonjour, > Existe t-il unr methode permettant d'arrondir un entier > 5,99 --> 6 > Ou suis je obliger de faire le traitement moi meme. > Cordialement
Cette methode mepermet de donner l entier superieur.
Si je desire avoir des nombres derieres la vrigule comme 5,359--> 5,36
comment puis je determiner les nombres derieres la virugles
Cordialement
"Ambassadeur Kosh" <kosh.naranek@babylon5.net> a écrit dans le message de
news: #QVpP$4gEHA.3992@TK2MSFTNGP11.phx.gbl...
Math.Floor et Math.Ceiling
et pour le reste, Math egallement
> Bonjour,
> Existe t-il unr methode permettant d'arrondir un entier
> 5,99 --> 6
> Ou suis je obliger de faire le traitement moi meme.
> Cordialement
Cette methode mepermet de donner l entier superieur. Si je desire avoir des nombres derieres la vrigule comme 5,359--> 5,36 comment puis je determiner les nombres derieres la virugles Cordialement
"Ambassadeur Kosh" a écrit dans le message de news: #QVpP$
Math.Floor et Math.Ceiling et pour le reste, Math egallement
> Bonjour, > Existe t-il unr methode permettant d'arrondir un entier > 5,99 --> 6 > Ou suis je obliger de faire le traitement moi meme. > Cordialement
Ambassadeur Kosh
je vois.
travaillons à 2 chiffres derriere la virgule par exemple
double x = 5.369434687 ; double y = x * 100. ; // du coup, y vaut 536.9434687 // et donc, on applique la methode d'avant pour "couper" double z = Math.Floor(y) ; // z vaut 536, reste à redecaler double result = z / 100. ; // et voila result vaut 5.36
pour l'arrondi superieur, c'est du meme gout avec Ceil. et pour l'arrondi au plus proche, je pourais vous amener le decalage de 1/2 mais Math.Round fait déja trés bien le boulot.
comme ces fonctions. ne sont pas directement dans Math. on va les creer.
class RoundMath { // precision est le nb de chiffres auquel on bosse. nb negatif positif ou nul, tout marche. public static double Floor(double x,double precision) { double a = Math.Pow(10,precision) ; return Math.Floor(a*x)/a ; }
// precision est le nb de chiffres auquel on bosse. nb negatif positif ou nul, tout marche. public static double Ceiling(double x,double precision) { double a = Math.Pow(10,precision) ; return Math.Celing(a*x)/a ; }
// precision est le nb de chiffres auquel on bosse. public static double Round(double x,double precision) { return Math.Round(x,precision) ; } }
voila voila...
je vois.
travaillons à 2 chiffres derriere la virgule par exemple
double x = 5.369434687 ;
double y = x * 100. ;
// du coup, y vaut 536.9434687
// et donc, on applique la methode d'avant pour "couper"
double z = Math.Floor(y) ;
// z vaut 536, reste à redecaler
double result = z / 100. ;
// et voila result vaut 5.36
pour l'arrondi superieur, c'est du meme gout avec Ceil.
et pour l'arrondi au plus proche, je pourais vous amener le decalage de 1/2
mais Math.Round fait déja trés bien le boulot.
comme ces fonctions. ne sont pas directement dans Math. on va les creer.
class RoundMath
{
// precision est le nb de chiffres auquel on bosse. nb negatif positif
ou nul, tout marche.
public static double Floor(double x,double precision)
{
double a = Math.Pow(10,precision) ;
return Math.Floor(a*x)/a ;
}
// precision est le nb de chiffres auquel on bosse. nb negatif positif
ou nul, tout marche.
public static double Ceiling(double x,double precision)
{
double a = Math.Pow(10,precision) ;
return Math.Celing(a*x)/a ;
}
// precision est le nb de chiffres auquel on bosse.
public static double Round(double x,double precision)
{
return Math.Round(x,precision) ;
}
}
travaillons à 2 chiffres derriere la virgule par exemple
double x = 5.369434687 ; double y = x * 100. ; // du coup, y vaut 536.9434687 // et donc, on applique la methode d'avant pour "couper" double z = Math.Floor(y) ; // z vaut 536, reste à redecaler double result = z / 100. ; // et voila result vaut 5.36
pour l'arrondi superieur, c'est du meme gout avec Ceil. et pour l'arrondi au plus proche, je pourais vous amener le decalage de 1/2 mais Math.Round fait déja trés bien le boulot.
comme ces fonctions. ne sont pas directement dans Math. on va les creer.
class RoundMath { // precision est le nb de chiffres auquel on bosse. nb negatif positif ou nul, tout marche. public static double Floor(double x,double precision) { double a = Math.Pow(10,precision) ; return Math.Floor(a*x)/a ; }
// precision est le nb de chiffres auquel on bosse. nb negatif positif ou nul, tout marche. public static double Ceiling(double x,double precision) { double a = Math.Pow(10,precision) ; return Math.Celing(a*x)/a ; }
// precision est le nb de chiffres auquel on bosse. public static double Round(double x,double precision) { return Math.Round(x,precision) ; } }
voila voila...
Antoine F.
Il n'y a pas une Math.Round(valeur, nb de chiffres après virgule) ???? C'est pourtant assez standard comme appel dans une multitude de langages....
.antoine
Il n'y a pas une Math.Round(valeur, nb de chiffres après virgule) ???? C'est pourtant
assez standard comme appel dans une multitude de langages....
Il n'y a pas une Math.Round(valeur, nb de chiffres après virgule) ???? C'est pourtant assez standard comme appel dans une multitude de langages....
.antoine
Ambassadeur Kosh
> Il n'y a pas une Math.Round(valeur, nb de chiffres après virgule) ????
C'est pourtant
assez standard comme appel dans une multitude de langages....
ben si. mais il n'y a "rien" pour la troncature inf ou sup. cad pas de Math.Foor(valeur, nb de chiffres après virgule) ni de Math.Ceiling(valeur, nb de chiffres après virgule). seulement Math.Floor(valeur) et Math.Ceiling(valeur). comme en lisant 5.999 -> 6 on ne deduit pas forcement que c'est Round qu'il faut, j'ai essayé de donner une réponse un peu générale.
voila voila
> Il n'y a pas une Math.Round(valeur, nb de chiffres après virgule) ????
C'est pourtant
assez standard comme appel dans une multitude de langages....
ben si. mais il n'y a "rien" pour la troncature inf ou sup. cad pas de
Math.Foor(valeur, nb de chiffres après virgule) ni de Math.Ceiling(valeur,
nb de chiffres après virgule). seulement Math.Floor(valeur) et
Math.Ceiling(valeur). comme en lisant 5.999 -> 6 on ne deduit pas forcement
que c'est Round qu'il faut, j'ai essayé de donner une réponse un peu
générale.
> Il n'y a pas une Math.Round(valeur, nb de chiffres après virgule) ????
C'est pourtant
assez standard comme appel dans une multitude de langages....
ben si. mais il n'y a "rien" pour la troncature inf ou sup. cad pas de Math.Foor(valeur, nb de chiffres après virgule) ni de Math.Ceiling(valeur, nb de chiffres après virgule). seulement Math.Floor(valeur) et Math.Ceiling(valeur). comme en lisant 5.999 -> 6 on ne deduit pas forcement que c'est Round qu'il faut, j'ai essayé de donner une réponse un peu générale.
voila voila
Vincent Lascaux
> double x = 5.369434687 ; double y = x * 100. ; // du coup, y vaut 536.9434687 // et donc, on applique la methode d'avant pour "couper" double z = Math.Floor(y) ; // z vaut 536, reste à redecaler double result = z / 100. ; // et voila result vaut 5.36
Comme on travaille avec des doubles, on ne doit pas se soucier du fait que result peut en fait valoir 5.3599999 ou 5.3600000001 (par exemple). Si on voulait (juste une hypothese) avoir la maitrise des décimales pour (par exemple) faire du traitement d'argent, il faudrait utiliser des entiers et parler en centimes (ou en millieme d'euros, ou en millionieme selon la précision désirée).
-- Vincent
> double x = 5.369434687 ;
double y = x * 100. ;
// du coup, y vaut 536.9434687
// et donc, on applique la methode d'avant pour "couper"
double z = Math.Floor(y) ;
// z vaut 536, reste à redecaler
double result = z / 100. ;
// et voila result vaut 5.36
Comme on travaille avec des doubles, on ne doit pas se soucier du fait que
result peut en fait valoir 5.3599999 ou 5.3600000001 (par exemple).
Si on voulait (juste une hypothese) avoir la maitrise des décimales pour
(par exemple) faire du traitement d'argent, il faudrait utiliser des entiers
et parler en centimes (ou en millieme d'euros, ou en millionieme selon la
précision désirée).
> double x = 5.369434687 ; double y = x * 100. ; // du coup, y vaut 536.9434687 // et donc, on applique la methode d'avant pour "couper" double z = Math.Floor(y) ; // z vaut 536, reste à redecaler double result = z / 100. ; // et voila result vaut 5.36
Comme on travaille avec des doubles, on ne doit pas se soucier du fait que result peut en fait valoir 5.3599999 ou 5.3600000001 (par exemple). Si on voulait (juste une hypothese) avoir la maitrise des décimales pour (par exemple) faire du traitement d'argent, il faudrait utiliser des entiers et parler en centimes (ou en millieme d'euros, ou en millionieme selon la précision désirée).