Ga naar inhoud

Double in de problemen


Aanbevolen berichten

Hoi iedereen, Ik heb ik kleine C++ probleempje, nl: Ik doe: (let vooral op `double2String(5.1 + 5.1)' ) KMessageBox::information(this, string2QString(double2String(5.1 + 5.1))); Waarna de message box me: 10.1 oplevert :S Zonder de `buf = buf * 10' komt er 10.1999999999....99 uit Het kan niet aan de messagebox of te int2string en zijn varianten liggen want de gecommentariseerde 'cout' in de functie levert me precies hetzelfde resultaat op. Ik hoop dat iemand hier raad mee weet ;) Alvast bedankt, Barry Faas De betreffende functies: [code:1:b6ef9acb01] string double2String(double input) { string retval; int forwardComma, backwardComma; double buf; double input2; input2 = input; forwardComma = (int)input2; buf = input - (double)forwardComma; buf = buf * 10; backwardComma = (int)buf; ///// !!! cout << forwardComma << "\n." << backwardComma << "\n"; !!!! //// if(backwardComma != 0) retval = int2String(forwardComma) + "." + int2String(backwardComma); else retval = int2String(forwardComma); return retval; } string int2String(int Value) { if (Value == 0) return "0"; int i; string Res; bool Neg = false; if (Value < 0) { Neg = true; Value = -Value; } while (Value > 0) { int x = Value % 10; Value /= 10; Res += int2Hex(x); } string Res2 = Neg ? "-" : ""; for (i = Res.size() - 1; i >= 0; i--) Res2 += Res[i]; return Res2; }; [/code:1:b6ef9acb01]
Link naar reactie
[code:1:652faa14b6] string double2String(double input) { string retval; int forwardComma, backwardComma; double buf; double input2; input2 = input; forwardComma = (int)input2; buf = input - (double)forwardComma; buf = buf * 10; [b] backwardComma = (int)buf; // je hakt af[/b] ///// !!! cout << forwardComma << "\n." << backwardComma << "\n"; !!!! //// if(backwardComma != 0) retval = int2String(forwardComma) + "." + int2String(backwardComma); else retval = int2String(forwardComma); return retval; } [/code:1:652faa14b6] Standaard methode om floating point getallen om te gooien naar ints: er een half bij optellen voor de conversie (net als jezelf ook in je hoofd doet). Dus: [code:1:652faa14b6] backwardComma = (int)(buf+0.5); [/code:1:652faa14b6]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...