この記事では主に Java の丸めと予約ビットの例を紹介します。編集者が非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう
四捨五入は小学校の算数の問題ですが、私たちプログラマーにとって、この問題は 1 から 10 までの加算、減算、乗算、除算と同じくらい簡単です。説明する前に、まず次の古典的なケースを見てみましょう。四捨五入 学校の採用活動に参加する際によく遭遇する典型的なケース(私は筆記試験の際に何度も遭遇したようです)。ここでの結果から、これら 2 つの数値は絶対値が同じであることがわかりますが、近似値が異なるのはなぜでしょうか?実際、これは Math.round で採用されている丸め規則によって決まります。
丸めは金融、特に銀行金利で実際によく使用されます。銀行の主な利益経路は、預金者から資金を集めて貸し出すことであることは誰もが知っています。通常の四捨五入ルールを採用する場合、ここでは次のように 10 回の入金ごとの利息の計算をモデルとして使用します:
四捨五入: 0.000、0.001、0.002、0.003、0.004。これはすべて銀行が稼いだお金です。
5 つの入力: 0.005、0.006、0.007、0.008、0.009。これらはそれぞれ、銀行が失ったお金です: 0.005、0.004、0.003、0.002、0.001。
したがって、銀行の利益は 0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005 となるはずです。この結果から、銀行は 10 回の利息支払いごとに 0.005 元を失う可能性があることがわかります。これは銀行にとって非常に大きな損失です。この問題に直面して、次のような銀行家関与手法が生まれました。このアルゴリズムはアメリカの銀行家によって提案され、主に上記の丸め規則によって引き起こされる誤差を修正するために使用されます。以下の通りです。
四捨五入桁の値が5未満の場合は、そのまま四捨五入されます。
四捨五入桁の値が5より大きい場合は四捨五入して四捨五入となります。
丸め桁の値が5の場合、5の後に0以外の値がある場合は繰り上げて四捨五入し、5の後に0がある場合はそれを基準に判定します。 5 より前の桁のパリティ。これは奇数であり、偶数は切り捨てられます。
上記のルールについて例を挙げます
11.554 = 11.55 -----4ラウンド
11.5551 = 11.56 -- -- - 5 の後に数字がある場合はキャリーします
public static void main(String[] args) { System.out.println("12.5的四舍五入值:" + Math.round(12.5)); System.out.println("-12.5的四舍五入值:" + Math.round(-12.5)); }
四半期利息は: 562.50 です。
2. ROUND_DOWN: ゼロに向かって丸めます。絶対値が小さい方向に入力すると全ビットが切り捨てられ、桁上げは行われません。
3. ROUND_CEILING: 正の無限大に向かって丸めます。正の最大方向に近づけます。正の数の場合、丸め動作は ROUND_UP と同様になり、負の数の場合、丸め動作は ROUND_DOWN と同様になります。 Math.round() メソッドはこのパターンを使用します。
4. ROUND_FLOOR: 負の無限大に向かって丸めます。負の無限大に近づけます。正の数の場合、丸め動作は ROUND_DOWN と同様になり、負の数の場合、丸め動作は ROUND_UP と同様になります。
5. HALF_UP: 最も近い数値が四捨五入されます (5 になります)。これは最も古典的なまとめです。
6. HALF_DOWN: 最も近い数値を四捨五入します (5 を四捨五入)。ここで 5 は破棄されます。
7. HAIL_EVEN: バンカーの丸め方法。
Java 操作では、予約ビットが不可欠であり、さまざまな方法を使用して予約ビットを実装できます。
予約ビット
方法 1: 丸め
public static void main(String[] args) { BigDecimal d = new BigDecimal(100000); //存款 BigDecimal r = new BigDecimal(0.001875*3); //利息 BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN); //使用银行家算法 System.out.println("季利息是:"+i); }
方法 2:
double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, RoundingMode.HALF_UP).doubleValue();
例:
方法 3:
java.text.DecimalFormat df =new java.text.DecimalFormat(”#.00″); df.format(你要格式化的数字);
new java.text.DecimalFormat(”#.00″).format(3.1415926)
方法 4:
。 例如: <bean:write name="entity" property="dkhAFSumPl" format="0.00" />
//或者
<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>
maxFractionDigits表示保留的位数
以上がJava 丸めおよび予約ビットのサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。