2

BigIntegerBeanのプロパティを検証できるカスタム バリデーターを Web アプリケーションに実装しています。Number(8, 0)このプロパティは、Oracle テーブルのタイプにマップされます。

のように、指定された数値の精度を返すことができるBigDecimalメソッドは見当たりません。BigInteger

基本的には、最初に次のようにBigInteger値を変換BigDecimalして精度を取得しています (これはデモ用です)。

int minPrecision=1;
int maxPrecision=8;

BigInteger bigInteger=new BigInteger("12345");
BigDecimal bigDecimal=new BigDecimal(bigInteger, 0);

int precision=bigDecimal.precision();
boolean isValid=precision>=minPrecision && precision<=maxPrecision;

System.out.println(isValid+" : "+precision);

BigIntegerその値の精度を返す正確な方法を提供しますか?

4

2 に答える 2

6

BigInteger整数では精度の概念が意味をなさないため、a には精度メソッドはありません。は、浮動小数点数の正確な 10 進数表現を表し、したがって関連付けられた精度を持つのとはBigInteger対照的に、任意のサイズの整数を表します。BigDecimal

于 2013-03-28T08:54:53.873 に答える
4

それを文字列に変換して、文字数をカウントできます。

...
BigInteger bi = new BigInteger("12345678");
Integer numberOfDigits = bi.abs().toString().length();
boolean isValid=numberOfDigits>=minNumberOfDigits && numberOfDigits<=maxNumberOfDigits;
于 2013-03-28T08:56:59.640 に答える