Moin, Sorry das ihr am 1. Weihnachtsfeiertag meinerseits gestört werdet…
double intsToDouble(int i1, int i2) {
return ((i1 << 1) + i2) / 13.0;
}
int[] doubleToInts(double d) {
int r = (int) Math.round(d * 13);
int i1 = r >> 1;
int i2 = r % 2;
return new int[]{i1, i2};
}
Meine Frage wäre einfach ob diese Funktionen äquivalent sind also die eine Umkehrfunktion der anderen wäre oder ob was falsch ist?
Und die andere Frage wäre, wie man diese Funktionen schrittweise aufstellen kann und deren Korrektheit beweist?
Und letzte Frage ist Wie vermeidet man das
new int[]
… also dass man extra ein neues Array anlegen muss? Aus anderen Programmiersprachen kenne ich das, dass man zum Besenstiel einfach ein 2-Tupel zurückgeben kann.