1.定義フィールドに高精度が必要な場合は、通常、BigDecimal
タイプが使用されます。
2.一般的に使用されるコンストラクター
BigDecimal(int)
は、パラメーターで指定され
BigDecimal(double)
た整数値でオブジェクトを作成します。パラメーターで指定された倍精度値でオブジェクト
BigDecimal(long)
を作成します。パラメーターで指定された長整数値でオブジェクト
BigDecimal(String)
を作成します。文字列でパラメーターで指定された値でオブジェクトを作成します。オブジェクト
はBigDecimalオブジェクトを直接作成し、さまざまなタイプの対応する値を渡すことができます。ただし、float値とdouble値を渡すと、予測できない状況が発生します。
double aa = 0.1116666;
BigDecimal bb = new BigDecimal(aa);
System.out.println("bb的值为"+bb);
結果は次のとおりです。
bb的值为0.111666600000000004744293846670188941061496734619140625
原因分析:
1)パラメータタイプを使用double
した構築方法の結果は、多少予測できません。Javaで書くとまったく同じようにnewBigDecimal(0.1116666)
作成されたと思うかもしれませんが、実際には同じです。これは、正確に表現できないためです(この場合、有限長のバイナリ10進数として表現することはできません)。コンストラクターに渡される値は完全に等しくなるわけではありません(表面的にはこの値と等しくなりますが)。BigDecimal
0.1116666
0.111666600000000004744293846670188941061496734619140625
0.1116666
double
0.1116666
2)String
構築方法は完全に予測可能です。書き込むnewBigDecimal(“0.1116666”)
と、が作成BigDecimal
され0.1116666
ます。これは、期待されるとまったく同じです。したがって、比較すると、一般的にはString
最初に工法を使用することをお勧めします。
3)Double
タイプdがにdouble
変わっBigDeciamal
たら、最初の1Double.toString(double)
つまたは複数のString.valueOf(double)
メソッドdouble
をString
タイプに変換してから、実際の値に相当する構築メソッドのタイプのBigDeciamal
パラメーターを呼び出すことができString
ます。
3.BigDecimal
一般的なメソッドの詳細な説明
1)一般的なメソッド
add(BigDecimal)
:BigDecimal
オブジェクトに値を追加してオブジェクトを返しBigDecimal
ます
subtract(BigDecimal)
:オブジェクトBigDecimal
の値を減算し、BigDecimal
オブジェクトを返します
multiply(BigDecimal)
:BigDecimal
オブジェクトの値を乗算してオブジェクトを返しBigDecimal
ます
divide(BigDecimal)
:オブジェクトBigDecimal
の値を除算して、BigDecimal
オブジェクトを返します
toString()
:BigDecimal
オブジェクトの値を文字列に変換します
doubleValue()
:BigDecimal
オブジェクトの値を倍精度の数値に変換します
floatValue()
:BigDecimal
オブジェクトの値を単一の精度の数値に変換します
longValue()
:BigDecimal
オブジェクトの値を長整数に変換します
intValue()
:BigDecimal
オブジェクトの値を整数に変換します
2)、BigDecimal
サイズ比較
JavaはBigDecimal
通常、サイズを比較bigdemical
するcompareTo
方法を使用します
int a = bigdemical.compareTo(bigdemical2)
戻り結果の分析:
a = -1は、bigdemical
より小さいことを意味しbigdemical2
ます;
a = 0は、bigdemical
等しいことを意味しbigdemical2
ます;
a = 1は、bigdemical
より大きいことを意味しますbigdemical2
;
例:aはb以上であること
new bigdemica(a).compareTo(new bigdemical(b)) >= 0
4. BigDecima````格式化 由于
NumberFormat 类的
format()方法可以使用
BigDecimal BigDecimal`` 对象作为其参数,可以利用
`は、16桁を超える通貨値、パーセンテージ値、および一般値のフォーマット制御を実行します。
BigDecimal
例として、通貨とパーセンテージのフォーマットを使用します。まず、算術演算BigDecimal
を実行した後、オブジェクトを作成BigDecimal
し、それぞれ通貨とパーセンテージのフォーマットへの参照を確立し、最後にBigDecimal
オブジェクトをformat()
メソッドパラメータとして使用して、フォーマットされた通貨の値とパーセンテージを出力します。
NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用
percent.setMaximumFractionDigits(3); //百分比小数点最多3位
BigDecimal loanAmount = new BigDecimal("15000.48"); //贷款金额
BigDecimal interestRate = new BigDecimal("0.008"); //利率
BigDecimal interest = loanAmount.multiply(interestRate); //相乘
System.out.println("贷款金额:\t" + currency.format(loanAmount));
System.out.println("利率:\t" + percent.format(interestRate));
System.out.println("利息:\t" + currency.format(interest));
結果:
贷款金额: ¥15,000.48 利率: 0.8% 利息: ¥120.00
5.BigDecimal
まとめ
1)正確な10進計算が必要な場合に使用しますBigDecimal
。巨大で複雑な計算を処理する場合、BigDecimal
パフォーマンス比double
とfloat
不十分さが特に明白です。したがって、一般的な精度の計算は必要ありませんBigDecimal
。
2)。パラメータタイプでString
コンストラクタを使用してみてください。