Javaで金銭的価値を計算する方法

金銭的価値は、通常、金融または電子商取引アプリケーションでプログラムされます。 「金額」の値を扱うときには常に疑問があります。 - 金額を表現するために double`や float`データ型を使うべきですか?

1.金額 - ダブル

次に、Javaで金額を表すためにdoubleを使用する例を示します。

MoneyDouble.java

package com.mkyong.test;

public class MoneyDouble {

    public static void main(String[]argv) {

        System.out.println("--- Normal Print-----");
        System.out.println(2.00 - 1.1);
        System.out.println(2.00 - 1.2);
        System.out.println(2.00 - 1.3);
        System.out.println(2.00 - 1.4);
        System.out.println(2.00 - 1.5);
        System.out.println(2.00 - 1.6);
        System.out.println(2.00 - 1.7);
        System.out.println(2.00 - 1.8);
        System.out.println(2.00 - 1.9);
        System.out.println(2.00 - 2);
    }

}

出力 - すべての二重小数点を正確に計算することはできません。

--- Normal Print-----

0.8999999999999999
0.8
0.7
0.6000000000000001
0.5
0.3999999999999999
0.30000000000000004
0.19999999999999996
0.10000000000000009
0.0

2.金額 - BigDecimal

上の小数点の問題を避けるために、 `BigDecimal`を使って 金銭的価値

MoneyBigDecimal.java

パッケージcom.mkyong.test;

import java.math.BigDecimal;

パブリッククラスMoneyBigDecimal {

public static void main(String[]argv){

System.out.println( "--- BigDecimal -----"); System.out.println(new BigDecimal( "2.00")。subtract(new BigDecimal( "1.1"))); System.out.println(new BigDecimal( "2.00")。subtract(new BigDecimal( "1.2"))); System.out.println(新しいBigDecimal( "2.00")。subtract(新しいBigDecimal( "1.3"))); System.out.println(新しいBigDecimal( "2.00")。subtract(新しいBigDecimal( "1.4"))); System.out.println(新しいBigDecimal( "2.00")。subtract(新しいBigDecimal( "1.5"))); System.out.println(new BigDecimal( "2.00")。subtract(new BigDecimal( "1.6"))); System.out.println(新しいBigDecimal( "2.00")。subtract(新しいBigDecimal( "1.7"))); System.out.println(new BigDecimal( "2.00")。subtract(new BigDecimal( "1.8"))); System.out.println(new BigDecimal( "2.00")。subtract(新しいBigDecimal( "1.9"))); System.out.println(new BigDecimal( "2.00")。subtract(new BigDecimal( "2"))); }

}

出力 - BigDecimalは、正確な10進演算を実行します。

--- BigDecimal-----
0.90
0.80
0.70
0.60
0.50
0.40
0.30
0.20
0.10
0.00
  • Note ** BigDecimalの計算は、ミシシッピクリティカルな計算アプリケーションの問題となるプリミティブ型の計算よりも遅くなります。ほとんどの電子商取引アプリケーションでは、それはうまくいくはずです。

参考文献

JavaDoc]。 http://www.opentaps.org/docs/index.php/How to Use Java BigDecimal: A Tutorial[How

Java BigDecimalを使用する]

bigdecimal double リンク://タグ/java/[java] money