2023 年の王 Zha 面接の質問を毎日練習しています -- なぜ精度が低下するのでしょうか?

基本的なデータ型で精度の低下が発生するのはなぜですか?また、精度の低下を回避する方法は何ですか?

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 型に拡張し、さらに計算を実行することです。
 

おすすめ

転載: blog.csdn.net/weixin_42450130/article/details/132640718