基本的なデータ型で精度の低下が発生するのはなぜですか?また、精度の低下を回避する方法は何ですか?
32ビットをロードする
精度が低下する理由:
入力値は 10 進数であり、計算の過程で 10 進値を桁数が制限された 2 進数の 10 進数に変換する必要があるため、精度が失われます。
結論: 2 進数の 10 進数では、10 進数をあまり正確に表現できません。
精度の低下を避けるには:
a. BigDecimal を使用できます 注: 計算を実行する場合は、String 型に変換し、BigDecimal が提供するメソッドを使用して計算を実装します。
b. 保管のために小数点以下の桁を整数に変換します (たとえば、お金 3.99 などの Long 型を使用します。お金の単位価値の計算は、分位数、つまり 399 セントで表すことができます)。
追加の知識ポイント: BigDecimal の基礎となる原理は、intCompact (199.99->19999 のように Long 型の N 倍に拡大)、スケール (小数点以下の桁数) を介して値を Long 型に拡張し、さらに計算を実行することです。