Bonjour a tous
Je cherche a séparer une valeur monétaire en deux nombres entiers (ex : 1025,60
Récuper la partie avant la virgule donc 1025
et l'autre partie 60
merci de votre aide.
Bonjour a tous
Je cherche a séparer une valeur monétaire en deux nombres entiers (ex : 1025,60
Récuper la partie avant la virgule donc 1025
et l'autre partie 60
merci de votre aide.
tu peux utiliser la fonction int qui va te donner la partie entiere d'un nombre
int(1025,60) = 1025
apres tu fais (1025,60 -1025)*100 = 60
je ne sais pas si ça marche avec une valeur monétaire , faut essayer
sinon faut la convertir en un reel.
bonne chance
Bonjour Samy
j'ai une erreur du compilateur.
E2010 Types incompatibles : 'Integer' et 'Extended'
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part int(1025,60) = 1025
Int renvoi la partie entière sous forme d'un réel. Pour retourner un entier, utilise Trunc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var V, I, D : extended; begin V := 1025.60; I := int(1025.60); // = 1025 D := frac(1025.60); // = 0.6 end;
si tu utilise le type Currency, c'est en fait un Int64 dont les 4 derniers chiffre sont la partie decimale
donc tu peuix t'en sortir comme ca (ya certainement + simple et efficace) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var c: Currency; Ent, Decim: integer; begin c := 1025.60;// = 10256000 en int64 Ent := Trunc(Int64(c)/1000); //1025 Decim := Int64(c) - Ent; //6000
Tu peux aussi détecter la position du séparateur décimal, ensuite récupérer la partie de gauche et de droite :
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShowMessage(IntToStr(Pos(',', '278,60'))); // renvoi valeur = 4
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager