Ich habe eine Problemstellung wo es erforderlich ist, dass 2 Kommazahlen so weit es geht mathematisch korrekt multipliziert werden, also dass 7,6*1,4 gleich 10,64 ergibt und nicht 10,63999999 oder so etwas ergibt.
Ich habe mir eine Hilfsfunktion gebastelt, die darauf beruht, dass ganze Zahlen richtig gerechnet werden:
Meine Frage ist ob es elegantere Möglichkeiten gibt?
Ich habe mir eine Hilfsfunktion gebastelt, die darauf beruht, dass ganze Zahlen richtig gerechnet werden:
Java:
public double multiPerfect(double a, double b){
//Bestimmung viele Stellen beide Zahlen hinter dem Komma haben
String as=""+a;
String bs=""+b;
int nka=as.substring(as.indexOf('.')+1, as.length()).length();
int nkb=bs.substring(bs.indexOf('.')+1, bs.length()).length();
//10 hoch die Längere wird der Multiplikator
double tenM=Math.pow(10, nka);
if(nka<nkb){
tenM=Math.pow(10, nkb);
}
/* es wird dafür gesorgt, dass die beiden Multiplikanten nur noch
0 hinter dem Komma haben*/
double al=a*tenM;
double bl=b*tenM;
//das muss bei der Rückgabe kompensiert werden
return (al*bl)/Math.pow(tenM, 2);
}