quetion d'arrondi

quetion d'arrondi - C - Programmation

Marsh Posté le 05-03-2004 à 18:55:10    

si par exemple on fait  
 
 
int a=3.7;  
 
eske a est egale a 3 ou a 4??  
 
 
cad eske le c arrondit au plus proche ou pas  
 
et si oui esk'il arrondit par defaut ou par exces dans le cas de 0.5...  
 
 
merci pour vos reponses

Reply

Marsh Posté le 05-03-2004 à 18:55:10   

Reply

Marsh Posté le 05-03-2004 à 19:08:32    

les conversions qui entrainent une perte d'informations sont dépendantes de beaucoup de paramètres. si tu veux un résultat sur, utilise <math.h>
 
 

F.4 Floating to integer conversion 1 If the floating value is infinite or NaN or if the integral part of the floating value exceeds the range of the integer type, then the invalid exception is raised and the resulting value is unspecified. Whether conversion of non-integer floating values whose integral part is within the range of the integer type raises the inexact exception is unspecified.292)
 
F.5 Binary-decimal conversion 1 Conversion from the widest supported IEC 60559 format to decimal with DECIMAL_DIG digits and back is the identity function.293) 2 Conversions involving IEC 60559 formats follow all pertinent recommended practice. In particular, conversion between any supported IEC 60559 format and decimal with DECIMAL_DIG or fewer significant digits is correctly rounded.

Reply

Marsh Posté le 05-03-2004 à 19:15:51    

non c pour un toute petite operation je veut juste savoir si le c arrondi au plus proche ou s'il supprime purement et simplement les chifres apres la virgule....

Reply

Marsh Posté le 05-03-2004 à 19:17:16    

ça dépend de ton système, ton compilateur, etc ... peut pas vraiment se prononcer ... le standard impose la troncature, mais y a des compilos qui prennent des libertés


Message édité par Taz le 05-03-2004 à 19:18:49
Reply

Marsh Posté le 05-03-2004 à 19:18:37    

merci ...

Reply

Marsh Posté le 05-03-2004 à 19:18:54    

edit

Reply

Marsh Posté le 05-03-2004 à 19:21:32    

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   int i = 3.7;
  5.   printf("%d %d\n", i, 3.7);
  6.   return 0;
  7. }


 
sur mon système, ça sort  
 
3 -1717986918
 
 
le 3 tu devrais le retrouver partout, sauf sur des compilateurs vieux ou libertaires. l'autre c'est complètement dépendant du système qui fait ce qu'il veut :D

Reply

Marsh Posté le 05-03-2004 à 19:30:07    

merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed