Ich habe schon über ein Java-Tutorial, und lief in einigen Fremdheit in diesem kleinen Beispiel ...
Code:
class SqrRoot {
public static void main(String args[]) {
double num,sroot,rerr,resquare;
for(num = 1.0; num < 100.0; num++) {
sroot = Math.sqrt(num);
System.out.println("Square root of " + num + " is " + sroot);
// compute rounding error
resquare = (sroot * sroot);
rerr = num - resquare;
System.out.println("Rounding error: num + " - " + resquare + " = " + rerr);
System.out.println();
}
}
}
Die Rückkehr ist merkwürdig - wenn ich die Ergebnisse, die ich ein kleines Programm, das eine Reihe von abgezogen Literal Fließkomma-Zahlen, die alle mit der normalen Binär-zu Dezimal-Wunderlichkeit (1,002 - 1,001 \u003d .000999999997), aber wenn ich die oben Code, bekomme ich was unter:
Code:
Square root of 1.0 is 1.0
1.0 - 1.0 = 0.0
Square root of 2.0 is 1.4142135623730951
2.0 - 2.0000000000000004 = -4.440892098500626E-16
Square root of 3.0 is 1.7320508075688772
3.0 - 2.9999999999999996 = 4.440892098500626E-16
....
Ich bin mir nicht sicher, ob es etwas, was ich bin und was falsch ist, verursachen. Ich habe ganz und hast alles, was ich gefunden habe, sind die Menschen gefragt, die Hardware-Beschränkungen von Floating-Point-Arithmetik. Jede Hilfe wäre sehr geschätzt.
Post Update ----- -----
Nachdem ich es hier ich nur, dass ich nicht unter Berücksichtigung der wissenschaftlichen Notation ... Boy zu fühle ich mich jetzt dumm
