ich folgende Berechnung in meiner Java-KlasseMath.pow Beschränkung die Berechnung auf eine Dezimalstelle
Math.pow (0,0901/12 * (1 + 0,0901/12), 356,966667)
zu tun versuchen, Ich bekomme 0.0 als Ergebnis. Jedoch ist das erwartete Ergebnis 0.1044
ich folgende Berechnung in meiner Java-KlasseMath.pow Beschränkung die Berechnung auf eine Dezimalstelle
Math.pow (0,0901/12 * (1 + 0,0901/12), 356,966667)
zu tun versuchen, Ich bekomme 0.0 als Ergebnis. Jedoch ist das erwartete Ergebnis 0.1044
Ich bin nicht so sicher, dass Ihr Ergebnis 0.10844 sein sollte. Die Basennummer ist ungefähr so ~ 0.00756 und Sie erhöhen sie auf eine positive Potenz von ~ 357. Das bedeutet, dass Sie für eine so große Macht viel mehr Nullen nach dem Komma haben werden. Das heißt, Sie haben einen positiven Wert, der kleiner ist als der doppelte Wert, und er wird auf 0,0 gerundet.
Mit BigDecimal erhalten Sie den folgenden Wert: ~ 7.08E-756 für Ihre Berechnung, während der kleinste positive Doppelwert (Double.MIN_VALUE) 4.9E-324 ist. Dies bedeutet, dass 0.0 Ihr gerundeter Wert ist.
Ich habe versucht, es mit 'System.out.printf ("%. 20f ", Math.pow (...)) anzuzeigen;', immer noch kein Glück. Ich denke, der OP hat irgendwo etwas falsch verstanden. – progyammer
Die Zahl enthält zu viele Nullen nach dem Komma. – Slimu
Nun, ich glaube nicht, dass "float" oder "double" diese vielen Orte unterstützen ... [Wolfram] (https://www.wolframalpha.com/input/?i= ((0.0901 +% 2F + 12) * (1% 2B (0.0901 +% 2F + 12))) +% 5E + 356.966667) – px06
Nein, Mathematik sagt, es ist 0, oder wahrscheinlich so etwas wie 0,00000000000001 – AmazingDreams
0,0901/12 * (1 + 0,0901/12) ist gleich 0,0075647084027 (7). Wenn Sie es auf eine Potenz von 357 erhöhen, erhalten Sie eine unglaublich kleine Zahl, die unter der Genauigkeitsgrenze des Doppels liegt, deshalb erhalten Sie 0.0. – Dth
Ihre Basis sollte etwa ~ 0.993779 sein, damit bei dieser Leistung die erwartete Antwort angezeigt wird. – Slimu