Decimal.Compare [Résolu]

bip98 104 Messages postés mercredi 23 avril 2003Date d'inscription 29 avril 2008 Dernière intervention - 3 mars 2005 à 09:02 - Dernière réponse : bip98 104 Messages postés mercredi 23 avril 2003Date d'inscription 29 avril 2008 Dernière intervention
- 4 mars 2005 à 09:46
M.MorpionMx
M'a parlé de la méthode Decimal.Compare, j'en aurai besoin ! car il faudrait que je teste juste des décimals, faudrait qui me dise si elle est plus grand ou plus petit que .5 ex:

8,89 et 0.5 --> ici plus grand
8.49 et 0.5 -->ici plus petit

J'ai cherché sur MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdecimalclasscomparetopic.asp

Mais j'y ai rien compris !

Pouvez vous m'éclairer ?
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 3 mars 2005 à 09:34
3
Merci
C'est bien simple



Decimal.Compare(0.49, 0.5) te retournera une valeur negative, car le premier parametre est plus petit que le second

Decimal.Compare(0.5, 0.5) te retournera 0, car les 2 parametres sont egaux
Decimal.Compare(8.49, 0.5) te retournera une valeur positive, car le premier premier parametre est plus grand que le second



En fait, c'est comme si tu demandais "Est ce que mon 1er param est plus grand que le second ?"
Valeur neg-> non

0 -> ils sont identiques
Valeur pos -> oui



Mx

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de MorpionMx
Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 3 mars 2005 à 17:35
3
Merci
Ok, la c'est encore autre chose. Je croyais que tu parlais du type Decimal, et non pas des décimales

Bah il faut juste que tu supprimes le nombre entier de chaque Decimal,
ou alors il y a peut-etre une methode qui ne garde que les chiffres
apres la virgule.

Pour la premiere solution, La methode Decimal.Truncate retourne l'entier, donc tu as juste a faire



Decimal d1 = 5.5m;

Decimal d2 = 0.5m;

int v_decimal_test=Decimal.Compare( d1 - Decimal.Truncate(d1), d2 - Decimal.Truncate(d2));


Et c'est bon.

Y'a peut etre une façon plus simple de faire ca.
Mx

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de MorpionMx
bip98 104 Messages postés mercredi 23 avril 2003Date d'inscription 29 avril 2008 Dernière intervention - 3 mars 2005 à 10:10
0
Merci
Ah, ok ! j'imaginais pas ca comme ca !! mais maintenant que tu le dis !!

Merci pour l'explication !
Commenter la réponse de bip98
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 3 mars 2005 à 10:27
0
Merci
Y'a pas de quoi :)

Mx
Commenter la réponse de MorpionMx
bip98 104 Messages postés mercredi 23 avril 2003Date d'inscription 29 avril 2008 Dernière intervention - 3 mars 2005 à 15:51
0
Merci
Quand je fais:
v_decimal_test=Decimal.Compare(2.3, 0.5);

v_decimal_test étant un INT

le compil me marque:
[C# Erreur] Print.cs(210): La méthode surchargée correspondant le mieux à 'decimal.Compare(decimal, decimal)' possède des arguments non valides
[C# Erreur] Print.cs(210): Argument '1' : impossible de convertir de 'double' en 'decimal'
[C# Erreur] Print.cs(210): Argument '2' : impossible de convertir de 'double' en 'decimal'

Et si je fais:

decimal oo=2.34
decimal ii=0.213
//La déclaration ne fonctionne pas..

car je pense qu'il faut les transformer en decimal...

Alors comment faire`?
Commenter la réponse de bip98
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 3 mars 2005 à 16:16
0
Merci
2.3 et 2.5 sont des doubles, donc il faut que tu les cast en decimal



int v_decimal_test=Decimal.Compare((Decimal)2.3, (Decimal)0.5);

ou

int v_decimal_test=Decimal.Compare(2.3m, 0.5m);

Mx
Commenter la réponse de MorpionMx
bip98 104 Messages postés mercredi 23 avril 2003Date d'inscription 29 avril 2008 Dernière intervention - 3 mars 2005 à 16:32
0
Merci
Oui ca marche la conversion ! je ne savais pas qu'on pouvait faire comme ca !!

Le prob maintenant c'est qu'il test le nombre entier..

Par ex: si je fais le test:

3.4 et 0.5 --> je voudrais qu'il me dise que 0.5 est plus grand et la il me retoune 1 donc il dit que 3.4 est plus grand !..il test pas le décimal mais le nombre entier..
Commenter la réponse de bip98
bip98 104 Messages postés mercredi 23 avril 2003Date d'inscription 29 avril 2008 Dernière intervention - 4 mars 2005 à 09:46
0
Merci
C'est génial !! j'en apprends tous les jours, merci !
Commenter la réponse de bip98

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.