Perché a volte la divisione JSP / JSTL per 1000 fornisce il resto?
-
05-07-2019 - |
Domanda
Quando divido per 1000 a volte mi imbatto in un bug che non fa la divisione "correttamente". Ad esempio, quando divido 90,55 per 1000 invece di ottenere .09055 ottengo .090549999999.
<c:out value="${bean.paPrice / 1000}" />
Perché sta succedendo questo? È un risultato della matematica in virgola mobile? Una ricerca su Google sembra indicare che questo potrebbe essere un colpevole, ma non ho trovato una risposta concreta.
Per risolvere questo problema, posso arrotondare la risposta a 5 cifre, ma sembra che questa sia solo una patch per un problema più profondo.
<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
Soluzione
Non è un problema, è solo un risultato naturale della rappresentazione binaria del virgola mobile. Arrotonda i tuoi valori e non preoccuparti.
Altri suggerimenti
Perché i computer fanno schifo in matematica?
Sì, questo è un problema comune formato a virgola mobile .