Comment arrondir un nombre entier?

Résolu
Signaler
Messages postés
7
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
24 mars 2010
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Bonjour j'ai un problème avec l'arrondissement.
Voilà je souhaite deux choses.
La première c'est de trouver le code le plus optimisé pour résoudre mon problème, moins il
y a de ligne, plus c'est rapide.

La deuxième c'est mon problème: c'est a dire que l'utilisateur pourra rentrer comme chiffre
soit 0,1,2,3,4,5,6,7,8,9. Quand il rentre le chiffre 0 ou 1 ou 2 ou 8 ou 9 je voudrais
que ca me retourne 0 et si c' est un 3 ou 4 ou 5 ou 6 ou 7 je voudrais que ca me retourne un 5.



Merci d'avance pour vos réponse j'espère avoir été clair dans mes explication :).

3 réponses

Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Bonjour,
(on dit un Arrondi pas un Arrondissement)
Utilise un TSpinEdit avec la valeur max à 9 pour être sûr que l'utilisateur n'entre pas un mauvais chiffre ou des lettres (comme ça 0 ligne de code) et si tu utilises un TEdit, alors penche toi sur le OnKeyPress qui interdit les autres touches que les chiffres, puis voici une fonction d'une ligne :

function RetourArrondi(const Chiffre: Integer): Integer;
begin
if Chiffre in [0,1,2,8,9] then Result:= 0 else Result:= 5;
end;

bye
Messages postés
7
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
24 mars 2010

merci beaucoup j'aurais pas fait mieux
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
c'est pas un arrondi c'est une convertion :

// 3 est le pivot
if V < 3 then 
  result := 0
else
  result := 5;


ou par table de convertion :
const
  CnvT : array[0..9] of integer = (0,0,0,5,5,5,5,5,5,5);
begin
  assert((V >= 0) and (V <=9), 'Error : Value range (0..9) out of limit '+IntToStr(V));
  result := CnvT[V];
end;