2

1000で除算すると、「正しく」除算されないバグに遭遇することがあります。たとえば、.09055を取得する代わりに90.55を1000で割ると、.090549999999が得られます。

<c:out value="${bean.paPrice / 1000}" />

なぜこうなった?これは浮動小数点演算の結果ですか?グーグル検索はこれが原因であるかもしれないことを示しているようでした、しかし私は具体的な答えを見つけませんでした。

これを修正するために、答えを5桁に丸めることができますが、これはより深刻な問題へのパッチにすぎないようです。

<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
4

3 に答える 3

3

これは問題ではありません。浮動小数点のバイナリ表現の自然な結果です。値を丸めて、心配する必要はありません。

于 2009-06-16T15:58:59.000 に答える
2

なぜコンピューターは数学に嫌気がさしているのですか?

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

于 2009-06-16T15:58:43.087 に答える
1

はい、これは一般的な浮動小数点形式の問題です。

于 2009-06-16T15:58:08.767 に答える