2 variablne voneinander abziehn
-
hi
ich habe 2 uint64 variablen und will die voneinander abziehn damit der entwert nicht größer als 5 oder so isthabs derzeit so gemacht
updiff = (Total0() - Total2()); if( updiff > 9.2*1024*1024) ...jedoch funzt das nicht
-
Und was genau funktioniert daran nicht?
(btw, aus dem Code-Schnipselchen kann man gar nichts erkennen)
-
es funktioniert einfach nicht
der gibt die ausgabe schon bevor der wert 9,2 erreicht wurde aus!
und er soll ja die ausgabe erst rausgeben wenn der wert überstiegen wurde und das funktioniert nicht.
-
Dann zeig doch mal etwas mehr Code - wie gesagt kann man dort nichts erkennen.
-
[cpp]
uint64 updiff;updiff = (UploadedTotal() - DownloadedTotal());
if( updiff > 9.2*1024*1024)
{
Log(_T("OKAY"));
return true;
}
-
Und was für Werte bekommst du von UploadedTotal() und DownloadedTotal()? (ein uint* ist unsigned, wenn die Differenz negativ wird, greift die Modulo-Arithmetik und du bekommst ein Ergebnis in der Größenordnung von 264)
-
achso
mist das wusste ich nichtja die totals sind auch als uint64 deklariert
und da die ja nicht ins negative gehen dann bringt das auch nichtskann ich das irgendwie anders lösen ohne die variable zu ändern
der total gibt MB werte aus, bzw. byte werte
eben was man gerade zu einem ftp server hochgeladen hat bzw. ein interener firmenclient.
-
Hi,
also Dein Sprachgebrauch lässt "Ungeübtheit" vermuten, deswegen mal kurz zur Klärung: updiff ist die einzige Variable, die Du überhaupt in den Händen hältst. Und dass Du die Rückgabewerte der Funktionen ändern kannst, wird aller Voraussicht nach auch nicht vorkommen...
Wenn Du Sorge vor einem Überlauf der Differenz hast, kannst Du erst die Funktionswerte gegeneinander checken und ggf. "andersherum abziehen":
if(UploadedTotal() > DownloadedTotal()) updiff = UploadedTotal() - DownloadedTotal(); else updiff = DownloadedTotal() - UploadedTotal()Gruß,
Simon2.