Warum JSP / JSTL Division durch 1000 manchmal Rest geben?
-
05-07-2019 - |
Frage
Wenn durch 1000 dividiert ich irgendwann über einen Fehler ausführen, die nicht die Teilung macht „richtig“. Wenn zum Beispiel 90,55 von 1000 Teilung statt 0,09055 des Erhaltens ich ,090549999999 erhalten.
<c:out value="${bean.paPrice / 1000}" />
Warum ist das passiert? Ist das ein Ergebnis von Punktmathematik Floating? Eine Google-Suche schien darauf hinzudeuten, dass dies ein Täter sein kann, aber ich habe keine konkrete Antwort gefunden.
Um dies zu beheben ich die Antwort auf 5 Stellen abzurunden, aber es scheint, als ob dies nur ein Patch auf ein tiefes liegendes Problem ist.
<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
Lösung
Es ist kein Problem, es ist nur eine natürliche Folge der binären Darstellung von Gleitkomma. Runde Ihre Werte und keine Sorge über sie.
Andere Tipps
Warum saugen Computer in Mathe?
Ja, das ist eine gemeinsame Gleitpunktformat Thema.