classes principais Java --BigDecimal

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.

 

Acho que você gosta

Origin www.cnblogs.com/yangmingxianshen/p/12501461.html
Recomendado
Clasificación