Java 丸めおよび予約ビットのサンプル コード

黄舟
リリース: 2017-08-22 09:56:47
オリジナル
1269 人が閲覧しました

この記事では主に 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.556 = 11.56 -------6エントリー


11.554 = 11.55 -----4ラウンド


11.5551 = 11.56 -- -- - 5 の後に数字がある場合はキャリーします


11.545 = 11.54 -----5 の後の数字は無数で、最初の桁が偶数の場合は切り捨てます

  • 11.555 = 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 です。

  • バンカーの丸めメソッドは上で簡単に紹介しましたが、現在 Java は 7 つの丸めメソッドをサポートしています:

  • 1: ゼロから離れる丸め。廃棄ビットが 0 でない限り、最大絶対値に向かって丸められます。


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); 
    }
ログイン後にコピー

ここでは BigDecimal を使用し、setScale メソッドを使用して精度を設定し、RoundingMode.HALF_UP を使用して丸めを示します。最寄りの近似計算のための数値ルール。ここでは、BigDecimal と丸めが完全に一致していることがわかります。

方法 2:

double  f  =  111231.5585; 
BigDecimal  b  =  new  BigDecimal(f); 
double  f1  =  b.setScale(2,  RoundingMode.HALF_UP).doubleValue();
ログイン後にコピー

例:

#.00 は小数点以下 2 桁 #.0000 小数点以下 4 桁などを意味します...


方法 3:

java.text.DecimalFormat  df  =new  java.text.DecimalFormat(”#.00″); 
df.format(你要格式化的数字);
ログイン後にコピー

%.2f % は、小数点以下の任意の桁数を表します。 f は、小数点以下 2 桁の結果を表します。

new java.text.DecimalFormat(”#.00″).format(3.1415926)
方法 4:


さらに、出力に struts タグを使用する場合は、format 属性があり、それを format="0.00" に設定すると、小数点以下 2 桁が保持されます

例如:


<bean:write name="entity" property="dkhAFSumPl" format="0.00" /> 
//或者 
<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>
ログイン後にコピー

maxFractionDigits表示保留的位数 

以上がJava 丸めおよび予約ビットのサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート