In meinem Code habe ich folgende Zeile.
%Vor% aber nach der Multiplikation bekomme ich -990102696
.
Kann jemand mir dabei helfen? Sind einige Größenbeschränkungen falsch?
(int)1700 * (int)1944038
entspricht Ihrer -990102696
.
Sind Sie sicher, dass c12
und fileSize
keine Ganzzahlen sind? Wenn dies der Fall ist, erfolgt die Multiplikation mit Integer-Typen, einem Integer-Überlauf, und sie wird nach%
Hmm, das habe ich gerade ausprobiert und ich bekomme "3.3048646E9". Sie sollten keine Überlaufumhüllung auf einem Doppelpack erhalten: Wenn Sie das Maximum überschreiten, sollte es sich in "Unendlichkeit" verwandeln.
Ich vermute, dass das Problem in dem liegt, was Sie versuchen, diese Nummer zu schreiben. Oder vielleicht müssen Sie uns etwas mehr Code zeigen.
Machen Sie ein Double on the Fly:
%Vor%sonst wird ein c12 als int mit einem anderen int multipliziert, und das Ergebnis läuft über und wird später - zu spät - in double umgewandelt.
%Vor%würde helfen, aber eine Dateigröße wie float / double sieht fischig aus.
Verwenden Sie BigDecimal multiplizieren Methode statt wie folgt, um potentielle überhöhte Probleme beim Umgang mit großen doppelten Zahlen zu verhindern:
%Vor%Tags und Links java