JSP / JSTLで1000で除算すると、時々余りが出るのはなぜですか?
-
05-07-2019 - |
質問
1000で除算するとき、「正しく」除算しないバグに遭遇することがあります。たとえば、90.55を.09055ではなく1000で割ると、.090549999999になります。
<c:out value="${bean.paPrice / 1000}" />
これはなぜ起こっているのですか?これは浮動小数点演算の結果ですか?グーグル検索は、これが原因である可能性を示唆しているように見えましたが、具体的な答えは見つかりませんでした。
これを修正するために、回答を5桁に丸めることができますが、これは単なるより深い問題へのパッチのようです。
<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
解決
これは問題ではなく、浮動小数点のバイナリ表現の自然な結果です。値を丸めて、それについて心配しないでください。
他のヒント
コンピューターはなぜ数学を嫌うのですか?
はい、これは一般的な浮動小数点形式の問題です。
所属していません StackOverflow