Hi,
ich hab 2 Funktionen die eine zum errechnen die andere zum zurückrechnen.
Mein problem ist jetzt das die errechnen Funktion X * Y einen kleineren Wert zurückgibt obwohl es beides ganzzahlen sind. Hab mit dem Taschenrechner nachgerechnet und gesehn das ein Falsches Ergebniss kommt. So bei kleinen Zahlen funktioniert es aber. Da hab ich gedacht das es vieleicht am Integer liegt weil das so eine Zahl nicht schaft.
Rechnung:
1216027634 * 163831 = 965280894(im Programm) mit Rechner
199223023305854 //Ist die Zahl vieleicht zu groß?
Gruß
Qt-nator
Rechenfehler oder liegts am int? [gelöst]
Rechenfehler oder liegts am int? [gelöst]
Zuletzt geändert von Qt-nator am 14. Juli 2008 13:16, insgesamt 1-mal geändert.
http://de.wikipedia.org/wiki/Integer_(D ... n_Integern
Versuch es mit einem int64.
Versuch es mit einem int64.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Hab ich versucht aber ohne ergebniss deswegen hier mal der Code vieleicht ist da ja schon was falsch.
der string besteht Aus zahlen Reihen die zusammengezählt 163831 ergeben hab ich auch mit dem Taschenrechner nachgerechnet. Das dann nNummber. Ja und nCurrentTime ist mein Parameter der Funktion und soll dann eine UnixTime Angebe sein.
Beide Zahlenwerte Stimmen bei der Rechnung(nCurrentTime & nNummber) nur das Ergebniss weicht total davon ab.
Code: Alles auswählen
QStringList list1 = test.split("-");
int nNummber = 0;
int nListLegenth = list1.size();
for(int i = 0; i < nListLegenth; i ++)
{
int nListContain = list1.value(i).toInt();
nNummber += nListContain;
}
__int64 nCrypt = nCurrentTime * nNummber;
return nCrypt;
}
Beide Zahlenwerte Stimmen bei der Rechnung(nCurrentTime & nNummber) nur das Ergebniss weicht total davon ab.
Bin mir grad nicht sicher aber ich denke das wird wie folgt vom Compiler umgesetzt:Qt-nator hat geschrieben:Code: Alles auswählen
int nNummber = 0; int nListLegenth = list1.size(); // ... __int64 nCrypt = nCurrentTime * nNummber; return nCrypt; }
Code: Alles auswählen
__int64 nCrypt = (__int64) ((int) nCurrentTime * (int) nNummber);Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel