Vraag & Antwoord

Programmeren

Double in de problemen

3 antwoorden
  • 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]
  • [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]
  • [img:ecf0f12dbf]http://phpc1.cjb.net/~barry/dialog.png[/img:ecf0f12dbf] Dankjewel voor het snelle antwoord!!! het werkt ;) Barry

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.