2009-06-16 5 views
2

1000で割ったときに、時折、「正しく」除算を行わないバグを実行します。たとえば、.09055を取得する代わりに、90.55を1000で割ると、.090549999999が得られます。JSP/JSTLの1000による除算が時には剰余を与えるのはなぜですか?

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

どうしてですか?これは浮動小数点演算の結果ですか? Googleの検索では、これが原因である可能性があるようですが、具体的な回答は見つかりませんでした。

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

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

重複:http://stackoverflow.com/questions/327544/strange-floating-point-behaviour-in-a-java-program –

+0

http://stackoverflow.com/questions/322749/retain-precisionも参照してください。 -with-double-in-java –

答えて

3

それは浮動小数点のバイナリ表現のちょうど自然な結果だが、問題はありません。値を丸めて、それについて心配しないでください。

関連する問題