Modulo mit double Zahlen

roxX0r

Mitglied
Hallo!

Ich brauche für mein Programm eine Überprüfung, ob z.B. ( 0.2 % 0.02 == 0 ) ist. Leider schlägt dies in Java fehl und eine Internet Recherche hat mich auf z.B. die Funktion Math.IEEEremainder(double, double) gebracht, die den Rest ausgibt. Jedoch bekomme ich bei dieser Funktion auch nicht genau 0 raus.

Hat jemand nen Tipp?
 
Moin,
hilft es Dir, wenn Du Dein Ergebnis entsprechend rundest?
Zurr Rundung von Werten bietet Java die Methoden ceil(), floor(), round() und rint() an!

Die Fkt. "Math.IEEEremainder" kenne ich nicht ....
Gruß
Klaus
 
Sonst schau mal was dir BigDecimal.remainder liefert, wenn du noch nen passenden MathContext mit angibst. Ansonsten erweitere deine Zahlen auf Ganzzahlen und nimm den normalen Modulo Operator.

Das erweitern geht wiederum recht einfach mit BigDecimal und den Methoden scale und scaleByPowerOfTen und einem nachfolgenden toIntValue.
 
danke für die Antworten, ich hab mir jetzt was leichteres überlegt und damit gehts auch..

ich poste es einfach mal:

Code:
double val = 0.2;
double sb = 0.02;
double c = 0;

for (int i = 0; i < 500; i++) {
       c = i * sb;
       if (c == val) return val;
       if (c > val ) break;

}

Das ist zwar nicht schön, aber tut genau das was ich brauch. Wenn sb ein ganzer Teiler von val ist, returnt die funktion und wenn nicht (d.h. c wird größer als val) wird die Schleife abgebrochen (und noch weitere Dinge ausgeführt)... val und sb sind natürlich eigentlich im Funktionskopf, also Parameter. Is jez nur ein Beispiel.
 
Zurück