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}" />
È stato utile?

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?

http://www.codinghorror.com/blog/archives/001266.html

Sì, questo è un problema comune formato a virgola mobile .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top