Salut à tous,
je voudrais bien savoir comment enlever le '000000E+....' d'un résultat de type réel (je ne sais pas si vous allez comprendre ma question mais je n'ai pas su comment la poser :s ) Merci.
Version imprimable
Salut à tous,
je voudrais bien savoir comment enlever le '000000E+....' d'un résultat de type réel (je ne sais pas si vous allez comprendre ma question mais je n'ai pas su comment la poser :s ) Merci.
Bonjour,
La réponse est dans la FAQ Pascal : http://pascal.developpez.com/faq/?pa...un-nombre-reel.
Il faut juste que tu formates le reél en question, c'est-à-dire que tu dises combien de chiffres il faut mettre après la virgule.
Par exemple :
3 est le nombre de chiffres avant la virgule etCode:writeln('Le resultat est:',R:3:2);
2 est le nombre de chiffres après la virgule. :D
Effectivement la réponse correcte se trouve dans la FAQ. Cependant le premier exemple est à modifier : tel quel, il ne compile ni avec FreePascal ni avec Delphi.
Code:
1
2
3
4
5
6
7
8
9 program test280313; {$APPTYPE CONSOLE} begin //WriteLn(15:6:2); WriteLn(15.0:6:2); ReadLn; end.
C'est en effet faux et voici la solution correcte :
3 est lenombre de chiffres avant la virgulenombre total de caractères à afficher et
2 est le nombre de chiffres après la virgule.
;)
Joa,
Pour Pascal, qui, de toute manière, prendra la place qu'il lui faut, c'est en fait le nombre total minimum de caractères à afficher.
Si ça ne suffit pas, Pascal en utilisera plus.
C'est d'ailleurs un des reproches qu'on peut lui faire, car si une donnée est hors valeurs prévues, ça bouleversera une éventuelle mise en page. :)
J'ajouterais que Turbo Pascal réserve de l'espace avant le nombre formaté pour compléter à x le nombre total de caractères y compris le séparateur décimal(.)
Par exemple Write(5.56897:5:2); fait apparaitre un espace avant le nombre affiché et Write(5.56897:8:2); en fera apparaitre 4 si bien que le nombre total de caractères soit 5 dans le premier exemple ou 8 dans le second.(x étant 5 ou 8 dans les exemples)
Salut. Je ne comprend absolument rien. Le 2ème nombre fait comment pour avoir 8 caractères moi j'en vois 6.
Pour comprendre ce que j'ai dit dans mon dernier post, essaie avec ceCode:
1
2
3
4
5
6
7
8 Program Test; Uses WinCrt; Begin WriteLn('123456789'); {la position du dernier chiffre en se référant à 123456789 ci-dessus, indique le nombre total de caractères : soit 5 ou 8 dans ce qui suit} WriteLn(5.56897:5:2);{5 caractères sont affichés dont un espace avant le nombre} Write(5.56897:8:2); {8 caractères dont 4 espaces avant} End.
Bonjour, :D
Il intervient effectivement des contraintes d'affichage, qui ont été bien résumées:
Je voulais signaler deux choses très simples, pour éviter de perdre inutilement du temps:
a) pour tout réel strictement compris entre (-1) et (+1), et dont on veut afficher (d) décimales, prévoir 3 intervalles supplémentaires pour le point, le zéro et l'éventuelle signe "moins";
b) pour s'assurer d'un mise en page convenable (parfois longue à trouver), employer une couleur de fond provisoire qui permet de vérifier l'emplacement exact de l'affichage.
Ce que fait ce petit programme:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 PROGRAM Affichage; USES Crt; CONST q = 0.12345678912345678912; VAR k: Byte; BEGIN FOR k:= 4 TO 21 DO BEGIN TextBackGround(1); TextColor(15); GotoXY(1, k); Write(' k = '); TextBackGround(4); TextColor(12); Write(k:2); TextBackGround(7); TextColor(00); GotoXY(8, k); Write(q:k:k-3) END; ReadLn END.