Como fazer BigDecimal Aritmética para Java

A pior parte sobre o uso do BigDecimal classe em Java é que você não pode usar operadores aritméticos normais com BigDecimal objectos. BigDecimal aritmética tem rules.T diferente ele seguinte código, por exemplo, não irá compilar:

BigDecimal subtotal, TaxRate, fiscal,-total subtotal = new BigDecimal ( "32.50") - TaxRate = new BigDecimal ( "0,05") - imposto = subtotal * taxRate- // erro: não vai compiletotal = subtotal + impostos // este não irá compilar quer

Em vez disso, você tem que chamar métodos da BigDecimal classe para efectuar operações aritméticas básicas. Todos esses métodos retornam o resultado do cálculo, BigDecimal objectos. Veja como você pode executar o cálculo do imposto anterior:

BigDecimal subtotal, TaxRate, fiscal,-total subtotal = new BigDecimal ( "32.50") - TaxRate = new BigDecimal ( "0,05") - imposto = subTotal.multiply (TaxRate) -total = subTotal.add (imposto) -

Aqui está uma lista de todos os métodos aritméticos para o BigDecimal classe. Como você pode ver, a classe tem métodos para operações básicas tais como adicionar, subtrair, multiplicar, e dividir, bem como algumas operações adicionais, tais como abs (poder absoluto), prisioneiro de guerra (Aumentando o número a uma potência), e negativo (Altera o sinal do número).

MétodoExplicação
BigDecimal abs ()Retorna o valor absoluto deste BigDecimal.
BigDecimal adicionarAdiciona o especificado BigDecimal para issoBigDecimal e devolve o resultado.
BigDecimal divide (BigDecimalval)divide esta BigDecimal por thespecified BigDecimal e retornos theresult. O método pode lançar ArithmeticException.
BigDecimal [] divideAndRemainder (BigDecimalval)divide esta BigDecimal por thespecified BigDecimaeu. O resultado e theremainder são retornados como uma matriz de dois elementos BigDecimal.
BigDecimal [] divideToIntegralValue (BigDecimalval)divide esta BigDecimal por thespecified BigDecimal e retorna theinteger resultado.
BigDecimal max (BigDecimal val)Retorna o maior desta BigDecimale o especificado BigDecimal.
BigDecimal min (BigDecimal val)Retorna o menor deste BigDecimal eo BigDecimal especificado.
BigDecimal multiplicação (BigDecimalval)multiplica isso BigDecimal por thespecified BigDecimal e retornos theresult.
BigDecimal negar ()nega esta BigDecimal eo resultado returnsthe.
BigDecimal pow (poder int)eleva este BigDecimal para a powerspecified pela int valor e resultado returnsthe.
restante BigDecimal (BigDecimalval)divide esta BigDecimal por thespecified BigDecimal e retorna theremainder.
BigDecimal subtração (BigDecimalval)Subtrai o especificado BigDecimaldisto BigDecimal e retornos theresult.

Observe que, além de divisão normal, você pode usar o divideToIntegralValue método para retornar a parte inteira do resultado. Aqui está um exemplo:

BigDecimal a = new BigDecimal ( "23.5") - BigDecimal b = new BigDecimal ( "7.0") - BigDecimal c-c = a.divideToIntegralValue (b) -

Após estas instruções são executadas, o valor de c é 3.

Você também pode usar o restante método para obter o restante de uma divisão:

C = a.remainder (b) -

Aqui o valor de c é 2.5.

Um erro comum entre os novos usuários do BigDecimal classe é esquecendo-se de atribuir o resultado de uma operação aritmética. Você pode olhar para este ciclo de código por horas, perguntando por que ele não parece funcionar:

BigDecimal totalWinnings = new BigDecimal ( "1000.00") - BigDecimal winningsThisGame = new BigDecimal ( "200.00") - totalWinnings.add (winningsThisGame) -System.out.println (totalWinnings) -

A terceira declaração acrescenta winningsThisGame para totalWinnings mas descarta o resultado. O que você provavelmente quis dizer foi o seguinte:

totalWinnings = totalWinnings.add (winningsThisGame) -

menu