begin process at 2012 02 11 08:27:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

arrondir un nombre selon nombre dans une listbox...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

arrondir un nombre selon nombre dans une listbox...

samedi 17 mai 2008 à 18:25:30 | arrondir un nombre selon nombre dans une listbox...

elt93

Bonjour,
Je travaille sur un logiciel de calcul ou jaimerais ajouter une fonction arrondir, en dessous se situe une TListBox avec les nombres de 1 à 5 sur chaque ligne que l'utilisateur selectionne pour dire combien de nombre veut-il apres la virgule, j'ai tenté ceci, mais ca n'a pas marché :

var
a: extended;
b: extended;
e: string;
begin
if arrondir.checked then try
if nombre.Items.Strings[nombre.ItemIndex]<> '1' then
e:= '0.0' else if nombre.Items.Strings[nombre.ItemIndex] <> '2' then
e:= '0.00' else if nombre.Items.Strings[nombre.ItemIndex] <> '3' then
e:= '0.000' else if nombre.Items.Strings[nombre.ItemIndex] <> '4' then
e:= '0.0000' else  if nombre.Items.Strings[nombre.ItemIndex] <> '5' then
e:= '0.00000' ;
finally
end;

if cube.Checked then try
if vol.checked then try
a:= strtofloat(la.Text);
b:= a*a*a;
finally
if arrondir.checked then FormatFloat(e , b);
Memo1.Lines.add('Volume du cube = '+floattostr(b)+ ' cm3');
if CheckBox1.Checked then Memo1.Lines.add('Formule (volume du cube) : longueur arête x longueur arête x longueur arête ');
end;
...
end;


Cordialement,
Merci d'avance pour votre aide !
samedi 17 mai 2008 à 19:17:18 | Re : arrondir un nombre selon nombre dans une listbox...

JulioDelphi

Membre Club Administrateur CodeS-SourceS
0) Salut,
1) Je pose un edit (edit1), je mets '5.987654321' dans son text.
2) Je pose un edit (edit2), je vide son text.
3) Je pose une listbox (listbox1), je mets 5 lignes, les chiffres de 1 à 5.
4) Je pose un bouton (button1), je mets cette procedure dessus :
"edit2.Text := floattostrf( strtofloat(edit1.text) , ffFixed , 7 , strtoint( listbox1.Items[listbox1.ItemIndex] ) );"
5) L'arrondi fonctionne.
6) De rien.
samedi 17 mai 2008 à 19:26:13 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS

ComboBox1 (cbxFloatPrec) >  0, 1, 2, 3, 4 ... 9, Ne pas arrondir

var FltPrec : integer;

uses Math;

....

procedure TFormX.cbxFloatPrecChange(Sender:TObject);
begin
  case cbxFloatPrec.ItemIndex of
   10 : FltPrec := -1;
   else
        FltPrec := cbxFloatPrec.ItemIndex;
  end;
end;

var S: string;
    F: extended;
begin
  F := a*a*a;

  case FltPrec of
    -1 : S := format('%f',[F]);
     0 : S := format('%d',[Round(F)]);
    else
         S :=
format('%.*f',[FltPrec,RoundTo(F, -FltPrec)]);
  end;
 
  Memo1.Lines.Add('Volume du cube : '+S+' cm3');
end;



samedi 17 mai 2008 à 19:46:45 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Merci beaucoup,
Mais pourquoi lorsque j'execute, et que je clique , le bouton, j'ai une exception disant: " n'est pas une valeur en virgule flottante correcte.
samedi 17 mai 2008 à 20:06:45 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Merci F0xi, je naivais pas vu ton poste avant de mettre mon dernier post. J'ai adapté ton code à mon logiciel, j'ai aucune exception mais ca ne marche pas, le nombre ne s'arrondit pas, voici ce que j'ai fait :
uses Math
var FltPrec : integer;
(nombre = Combobox)

procedure TForm1.nombreChange(Sender: TObject);
begin
  case nombre.ItemIndex of
   10 : FltPrec := -1;
   else
        FltPrec := nombre.ItemIndex;
  end;
end;

procedure TForm1.Button27Click(Sender: TObject);
var
a: extended;
b: extended;
e: string;
begin
if cube.Checked then try
if vol.checked then try
a:= strtofloat(la.Text);
b:= a*a*a;
finally
if arrondir.Checked then case FltPrec of
    -1 : e := format('%f',[b]);
     0 : e := format('%d',[Round(b)]);
    else
         e := format('%.*f',[FltPrec,RoundTo(b, -FltPrec)]);
  end;

Memo1.Lines.add('Volume du cube = '+floattostr(b)+ ' cm3');
if CheckBox1.Checked then Memo1.Lines.add('Formule (volume du cube) : longueur arête x longueur arête x longueur arête ');
end;


Merci beaucoup pour votre aide
dimanche 18 mai 2008 à 07:46:19 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS

if arrondir.Checked then // ne sert plus a rien car option "ne pas arrondir" dans la combobox en item 10

  case FltPrec of
    -1 : e := format('%f',[b]);
     0 : e := format('%d',[Round(b)]);
    else
         e := format('%.*f',[FltPrec,RoundTo(b, -FltPrec)]);
  end;
Memo1.Lines.add('Volume du cube = '+e+ ' cm3');





dimanche 18 mai 2008 à 07:50:10 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !


et "nombre" doit etre remplis comme suit (propriété "Strings") :

0
1
2
3
4
5
6
7
8
9
ne pas arrondir

l'option Ne pas arrondir doit retourner FltPrec = -1 (evenement onchange)

on pourrait même compliquer les choses en ajoutant une autre combobox permettant de choisir l'arrondis, au plus petit, au plus prés, au plus grand (floor, round, ceil).



dimanche 18 mai 2008 à 10:57:07 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Ok super, vraiment merci
mais quand je met la comboBox sur ne pas arrondir ca l'arrondit quand meme a deux chiffres après la virgule.
Vraiment merci f0xi !
dimanche 18 mai 2008 à 16:52:14 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Desole, pour mon dernier post c'était une erreur d ema part, il fallaiut juste entrer 11 à la place de 10 puisque 'Ne pas arrondir se trouvait à la 11 eme ligne en comptant le 0 et le 10.
lundi 19 mai 2008 à 02:46:57 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

oui, les programmeurs compte a partir de 0 ...

bytes, 256 valeurs ... de 0 a 255
word, 65536 valeurs ... de 0 a 65535
integer, 2^32 valeurs ... de -2^31 a 2^31-1
longword, 2^32 valeurs ... de 0 a 2^32-1

d'ailleur ... 2^0 = 1






Cette discussion est classée dans : nombre, arrondir, checked, if, then


Répondre à ce message

Sujets en rapport avec ce message

choix radiobutton [ par watrem ] Bonjour voila j'ai installer sur une fiche 2 radiobutton , chaque radio button a pour fonction de ranger des donnees numeriques soit par fichier de 20 Navigateur par onglet [ par frederic6962 ] Bonjour à tous.J'ai créer un navigateur par onglet. J'utilise donc un pagecontrol, un TTabsheet et un webbrowser, le tout créer dynamiquement. J'ai in arrondir un nombre [ par 980074 ] bête petite question : comment arrondir, en pascal, un nombre entamé vers l'unité supérieure? TRUNC + 1 n'est pas valable pour les nombres entiers...e "Jeu de dames" [ par ptitlog ] Bonjour à tous, je suis inscrit su le site depuis un petit temps étant donné que je viens souvent me ressourcer ici cependant je n'ai encore jamais po Recuperer valeur champs d'un site format flashplayer [ par Ra_andry ] Andry slt tout le monde, Existe t-il une commande API ou autre pour recuperer la valeur d'un champ d'un site web qui est en flashplayer, en HTML c'e Ouvrir MS Word, Excel etc en plein ecran [ par lordrt ] Bonjour à tous, J'ai un app en Delphi qui ouvre des documents OLE, ex. Word, Excel, PDF entre autres, mais le probleme est que si la fenetre du docume Comment arrondir un nombre entier? [ par djtinou ] 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ésoudr simplifier conditions [ par JackNUMBER ] Bonsoir une petite question facile, comment "simplifier" ces conditions : [code=pas]for i:= CheckListBox1.Count -1 downto 0 do if CheckListBox1.Chec [Delphi 5] Problème de compilation et de boucle if [ par Nyio ] Bonjour à tous, Je travail actuellement sous Delphi 5 et deux problèmes me bloquent dans l'avancement de mon projet : [u]Problème 1 :[/u] [code=pas] Arrondir un nombre décimal à 2 chiffres après la virgule ? [ par Rowan ] Bonjour,Tous d'abord un grand merci à DELPHIPROGqui a répondu à mon probleme de tranformationde point en virgule et inversement.J'ai toujours un probl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,465 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales