anoniem Geplaatst: 12 juli 2002 Delen Geplaatst: 12 juli 2002 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] Quote Link naar reactie
anoniem Geplaatst: 12 juli 2002 Auteur Delen Geplaatst: 12 juli 2002 [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] Quote Link naar reactie
anoniem Geplaatst: 12 juli 2002 Auteur Delen Geplaatst: 12 juli 2002 [img:ecf0f12dbf]http://phpc1.cjb.net/~barry/dialog.png[/img:ecf0f12dbf] Dankjewel voor het snelle antwoord!!! het werkt ;) Barry Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen