Newsgroup: it.comp.lang.c
Titolo: Fare una semplice divisione ... a me non viene !

Devo fare un programmino in cui c'č l'operazione
c=(((26.0*f)+1.0))/11.0);
printf("%d",c);
Ma a video mi da dei risultati incomprensibili... tipo 0.407... quando
invece dovrebbe risultare 2.3 (ad esempio) !
"c" ed "f" sono double !
Il problema, č che sono io un incapace(probabile) o c'č qualche altro errore
??
Poi, avevo un altro problema...
Devo fare in modo di capire se il risultato di una certa operazione, č un
numero intero oppure no ?? Come si fa ?
CIAO e GRAZIE
--
________
<< C'č sempre qualcuno sopra di te e sotto di te >>
 
http://jo.cjb.net
 
http://mizar.cjb.net
________

 "c" ed "f" sono double !
Allora perche' li stampi come %d ossia int!?! 
Ciao.
-- 
*******************************************************
  "C'e' un vecchio detto a riguardo delle reti che    
  recita: i problemi di banda possono essere risolti  
  con il denaro. I problemi di latenza sono piu' dif- 
  ficili poiche' la velocita' della luce e' una cos-  
  tante e non e' possibile corrompere Dio."           
 
                                     David Clark, MIT 
  Reply to 
bia...@maganet.net
*******************************************************

 numero intero oppure no ?? Come si fa ?
int IsInt(double a)
{
    double b=(double) round(a);
    if (b>=a-EPS && b<=a+EPS) return true;
    return false;
}
Devi scegliere EPS in base alla precisione che vuoi ottenere.
Scegliere EPS=0.0 puo' portare a non trovare mai verificata la
condizione a causa dei problemi di rappresentazione. 
-- 
     (ZZZ)       Filippo Salotti, Bagni di Lucca, Lucca, Italy.
    //   \\  _                 E-mail : 
fil...@humnet.unipi.it
   /Y\    ZD<_o===============================================o
 .oZZZZZo.     | Studente Ingegneria Informatica Automatica  |
<OXXXXXXXO>    | Dip. Sistemi Elettrici Universita' di Pisa. |

Ecco il codice...
#include<stdio.h>
main()
{ 
double d;
d=(26.0/11.0);
printf("%lf",d);
}
Come risultato mi da 0.423077....
Il compilatore č Bloodshed Dev-C v1.0 Miracle C compiler !
Dove sta il problema ??
Cia e ancora Grazie :-))


 Dove sta il problema ??
CON LCC-WIN32 IL RISULTATO E':2.36363636363636
-- 
Ciao...
Robji
togli 'nograzie' da 
rmas...@nograzie.hotmail.com
 per rispondermi in
privato
My Homepage at: 
http://www.geocities.com/SoHo/NooK/4547/

 numero intero oppure no ?? Come si fa ?
Non so se sia il modo migliore né se sia corretto al 100%, comunque puoi
utilizzare
if ( c == ( long ) c )
    /* intero */
else
    /* non intero */
EMG

 Dove sta il problema ??
VC++ v6.0 risultato: 2.363636
BC v5.02  risultato: 2.363636
Ma che compilatore e' :-)?
Io non l'ho mai sentito nominare :-(.
Ciao.



Infatti mi sa che č colpa del compilatore :-)))
CIAO e Grazie !


 Il primo che ho trovao in rete ;-))
Scricati la versione del gcc per la piattaforma che vuoi utilizzare, e'
free ed e' aderente allo standard.


 CIAO e Grazie !
Ciao Paolo
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

 che usi serve per stampare un int.
A me risulta che lo specificatore %f valga per i double e per i float
(che vengono convertiti in double). Sbaglio?
EMG

 Come risultato mi da 0.423077....
O il codice che hai riportato non è esattamente quello che hai compilato
ed eseguito oppure c'è un grave problema nel tuo compilatore.
EMG


Anche io avevo sempre utlizzato %f, le MSDN indicano %f per i double e
%lf non lo citano neanche.
Poi alcuni post precedenti indicavano come %lf indispensabile per i
double e sia in BC5 VC6 funziona.
Forse in alcuni compilatori e' necessario.
Purtroppo non conosco con precisione cosa indica lo standard (anche se
sembra che in questo campo non sia molto rispettato).


>
Ciao, Luca.


 >>
Su questo non ci sono dubbi, ma noi si parlava di float e double...


 >>
Gią, ma un double non č un long float. O si?
EMG

 EMG
Per quanto riguarda le dimensioni, cmq dipendenti dalla macchina, i
*float* sono di 4 byte, i *double* di 8 byte e i *long double* di 12
byte; penso quindi che *long float* e *double* siano la stessa cosa.
Ciao.


 byte; penso quindi che *long float* e *double* siano la stessa cosa.
Va beh, comunque non mi sembra che lo standard dica che per i double ci
vuole %lf.
EMG