E BigInteger semelhante, BigDecimal de qualquer tamanho e pode representar um número completamente precisos ponto flutuante de precisão.
O BigDecimal BD novo novo = o BigDecimal ( "123.456");
o sistema. OUT .println (bd.multiply (BD)) ; //15241.383936
o BigDecimal com escala () representa um número de casas decimais, por exemplo:
a BigDecimal o BigDecimal novo novo D1 = ( "123,45") ;
o BigDecimal novo novo D2 = o BigDecimal ( "123,4500");
o BigDecimal novo novo D3 = o BigDecimal ( "1234500");
. o Sistema OUT .println (d1.scale ()) ; // 2
. Sistema OUT .println (d2.scale () ) ; // 4.
Sistema. OUT .println (d3.scale ()) ; // 0
método através stripTrailingZeros BigDecimal (),
pode ser formatado como uma BigDecimal um igual, mas removeu a extremidade BigDecimal 0:
D1 = o BigDecimal novo novo o BigDecimal ( "123,4500" );
o BigDecimal d1.stripTrailingZeros D2 = ();
System.out.printlnl (d1.scale ()); . // 4
System.out.printlnl (d2.scale ()); / / 2, em que foram removidos 00
a BigDecimal D3 = novo novo o BigDecimal ( "1234500" );
o BigDecimal d3.stripTrailingZeros D4 = ();
System.out.printlnl (d3.scale ()); // 0
System.out.printlnl (D4 .scale ()); // -2
se uma escala de BigDecimal () retorna um negativo,
pode ser fornecida a um BigDecimal sua escala, se a precisão é menor do que o valor original,
em seguida, o método de acordo com o arredondamento ou truncamento directa especificado:
público classe principal { pública estáticos vazios principais (String [] args) { BigDecimal d1 = new BigDecimal ( "123,456789" ); BigDecimal d2 = d1.setScale (4, RoundingMode.HALF_UP); // 四舍五入, 123.4568 BigDecimal d3 = d1.setScale (4, RoundingMode.DOWN); // 直接截断, 123.4567 System.out.printlnl (d2); System.out.printlnl (D3); } }
BigDecimal para fazer adição, subtração, precisão não é perdido,
mas fazer a divisão, há casos não podem ser divididas, e é assim que deve especificar a precisão para ser truncado.
D1 = o BigDecimal novo novo o BigDecimal ( "123.456" );
o BigDecimal D2 = novo novo o BigDecimal ( "23,456789" );
o BigDecimal d1.divide D3 = (D2, 10 , como RoundingMode.HALF_UP); // Reservados 10 decimal e arredondado
BigDecimal d4 = d1 .divide (D2); // dada: ArithmeticException, como indivisível
pode fazer o resto da divisão do número de BigDecimal simultânea:
público classe principal { pública estáticos vazios principais (String [] args) { BigDecimal n = new BigDecimal ( "12.345" ); BigDecimal m = novo BigDecimal ( "0,12" ); BigDecimal [] dr = n.divideAndRemainder (m); System.out.printlnl (dr [ 0]); // 102 System.out.printlnl (dr [1]); // 0,105 } }
Quando chama divideAndRemainder () retorna uma matriz contendo dois BigDecimal, são o quociente e o resto,
que é sempre um quociente inteiro, sendo o restante não será maior do que o divisor. Podemos utilizar este método para determinar se duas BigDecimal é um número inteiro múltiplo:
BigDecimal = N- novo novo BigDecimal ( "12,75" );
BigDecimal m = novo novo BigDecimal ( "0,15" );
BigDecimal [] = n.divideAndRemainder DR (m);
IF ( DR [ . 1 ] .signum () == 0 ) {
// n-m é um número inteiro múltiplo
}
comparação BigDecimal
em comparação dois valor BigDecimal, com um cuidado especial,
utilização iguais () método não requer apenas os dois valores sejam iguais BigDecimal, eles também exigem a escala () é igual a:
a BigDecimal o BigDecimal nova nova D1 = ( "123.456");
o BigDecimal nova nova D2 = a BigDecimal ( "123,45600");
System.out.println (d1.equals (D2)); // para false ,
O Sistema .out.println (d1.equals (d2.stripTrailingZeros ())); // a verdade , porque a remoção do d2 cauda 0 a escala torna-se 2 Sistema .out.println (d1.compareTo (D2)); // 0 must usando o método compareTo () para comparar, que devolver os dois valores de acordo com o tamanho de negativo e positivo, e 0, respectivamente, inferior a, maior do que, igual e. Se você olhar na fonte BigDecimal pode ser encontrado, na verdade, é um BigDecimal através de uma BigInteger e uma escala representados,
Que BigInteger representa um inteiro completo e escala representa o número de casas decimais:
público classe BigDecimal estende Número implementos comparáveis <BigDecimal> { private final, BigInteger intval; private final, int escala; }
BigDecimal é herdada do número, bem como objetos imutáveis.