Titlul: problema numere reale Scris de: Darius-Florentin Neatu din Aprilie 13, 2013, 20:04:05 Salut. Sunt incepator in C++. Nu stiu de ce in codul urmator timp este trunchiat la partea intreaga.
long double timp; timp=d*3600/vi; //d,vi sunt int-uri Titlul: Răspuns: problema numere reale Scris de: Paul-Dan Baltescu din Aprilie 13, 2013, 20:16:21 Compilatorul presupune ca tipul final al unei operatii este dat de cel mai mare dintre tipurile elementelor care participa in operatie. In cazul tau, operatiile se executa in ordinea urmatoare (dupa cum si e normal): inmultire, impartire, atribuire. De aceea, cand este calculat rezultatul impartirii dintre d*3600 si vi, tipul considerat este int (operanzii fiind amandoi de tip int), iar abia la pasul urmator rezultatul este convertit la long double pentru ca timp (care abia acum participa la evaluare) este de tip long double. Rezultatul impartirii a doua elemente de tip intreg este partea intreaga (sau catul) corespunzator fractiei.
Niste idei despre cum poti rezolva problema: Cod: long double timp = (long double) d * 3600 / vi; Cod: long double timp = d * 3600.0 / vi; Dupa cum vezi, a doua varianta nu face exact ce vrei, dar e mai concisa si de multe ori suficienta. Titlul: Răspuns: problema numere reale Scris de: Darius-Florentin Neatu din Aprilie 13, 2013, 23:18:33 multumesc
|