logo

Duas casas decimais Java

Em Java, quando usamos um tipo de dados duplo antes de uma variável, ele representa 15 dígitos após a vírgula decimal. Mas às vezes precisamos de apenas duas casas decimais após as vírgulas, como para representar rúpias e outras unidades. Então, nesta seção, vamos discutir o maneiras de exibir o dobro com até duas casas decimais junto com um exemplo adequado e programas Java.

jpa na primavera
Duas casas decimais Java

Java fornece as três maneiras a seguir de exibir double em 2 casas decimais:

  1. Usando DecimalFormat ('0,00')
  2. Usando o método String.format() ('%.2f')
  3. Usando BigDecimal

Vamos discutir as formas acima, uma por uma.

Usando DecimalFormat

Java Formato Decimal é uma subclasse concreta da classe NumberFormat usada para formatar os números decimais. a aula fornece o setRoundingMode() método para exibir um número duplo com até duas casas decimais.

Sintaxe:

 public void setRoundingMode(RoundingMode roundingMode) 

Ele aceita o modo de arredondamento como parâmetro e substitui o método setRoundingMode() do Formato numérico aula. Isso joga Null Pointer Exception se não especificarmos nenhum roundingMode. A tabela a seguir descreve os diferentes modos de arredondamento.

Colocar número ACIMA ABAIXO TETO CHÃO MEIO_UP MEIO_PARA BAIXO MEIO_PAR DESNECESSÁRIO
5.5 6 5 6 5 6 5 6 lançar ArithmeticException
2,5 3 2 3 2 3 2 2 lançar ArithmeticException
1.6 2 1 2 1 2 2 2 lançar ArithmeticException
1.1 2 1 2 1 1 1 1 lançar ArithmeticException
1,0 1 1 1 1 1 1 1 1
-1,0 -1 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1 lançar ArithmeticException
-1,6 -2 -1 -1 -2 -2 -2 -2 lançar ArithmeticException
-2,5 -3 -2 -2 -3 -3 -2 -2 lançar ArithmeticException
-5,5 -6 -5 -5 -6 -6 -5 -6 lançar ArithmeticException

Usamos outro método da classe DecimalFormat é o formatar() método. Ele formata uma string para produzir uma string.

Sintaxe:

 public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) 

O método aceita três parâmetros número, resultado e posição. Mas os dois últimos parâmetros são opcionais. Ele retorna a string numérica formatada. O método lança Exceção Aritmética se Modo de arredondamento está configurado para DESNECESSÁRIO.

bash para loop 1 a 10

DoisDecimalPlace1.java

 import java.math.RoundingMode; import java.text.DecimalFormat; public class TwoDecimalPlace1 { //constructor of the DecimalFormat class private static final DecimalFormat decfor = new DecimalFormat('0.00'); public static void main(String args[]) { //defining a number of type double double num = 123.9876543567; System.out.println('Double Number: ' + num); System.out.println('Double Number: ' + decfor.format(num)); //123.99 //DecimalFormat, default is RoundingMode.HALF_EVEN decfor.setRoundingMode(RoundingMode.DOWN); System.out.println('
Before Rounding: ' + decfor.format(num)); //123.98 decfor.setRoundingMode(RoundingMode.UP); System.out.println('After Rounding Up: ' + decfor.format(num)); //123.99 } } 

Saída:

 Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99 

Usando o método String.format()

Java também fornece o método format() para formatar o número. Pertence à classe String. Ao usar o método, pode-se formatar qualquer número e string de acordo.

Para alterar o número até duas casas decimais, usamos %.2f para formatar o número. Observe que não podemos arredondar o número no método String.format(), sempre arredondando pela metade.

Sintaxe:

 public static String format(String format, Object... args) 

O método aceita os dois parâmetros a seguir:

formatar: É uma string formatada que queremos.

argumentos: Estes são os argumentos referenciados pelos especificadores de formato na string de formato.

Ele retorna a string formatada. Isso joga IllegalFormatException se a string de formato contiver sintaxe ilegal. Também joga Null Pointer Exception se especificarmos o formato como nulo.

DoisDecimalPlace2.java

 public class TwoDecimalPlace2 { public static void main(String args[]) { //defining a number of type double double num = 10.98765432167; System.out.println('Double Number: ' + num); //use either of the following two statements for two decimal places both gives the same result System.out.println('Double Number: ' + String.format('%.2f', num)); System.out.format('Double Number: %.2f', num); } } 

Saída:

renomeando pasta no linux
 Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99 

Usando BigDecimal

Também podemos usar a classe Java BigDecimal para exibir um número com até duas casas decimais. Isso pertence a java.math.BigDecimal pacote. Ele estende a classe Number e implementa o Comparável interface.

A classe fornece o método setScale(). A sintaxe é a seguinte:

Sintaxe:

desativando o modo de desenvolvedor Android
 setScale(int newScale, RoundingMode roundingMode) 

O método aceita dois parâmetros:

nova escala: A escala do valor BigDecimal a ser retornado.

modo de arredondamento: O modo de arredondamento que queremos aplicar.

Ele retorna o BigDecimal cuja escala é o valor especificado e cujo valor sem escala é determinado multiplicando ou dividindo o valor sem escala deste BigDecimal pela potência apropriada de dez para manter seu valor geral.

O método lança o Exceção Aritmética se Modo de arredondamento está configurado para DESNECESSÁRIO . O RoundingMode é um enum que fornece o RoundingMode discutido acima.

Outro método que usamos neste programa é BigDecimal.doubleValue(). Ele converte BigDecimal em um dobro número. Vejamos um exemplo.

TwoDecimalPlace3.java

 import java.math.BigDecimal; import java.math.RoundingMode; public class TwoDecimalPlace3 { public static void main(String args[]) { //defining a number of type double double num = 12.4565652239; System.out.println('Double Number: ' + num); BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP); double newNum = bd.doubleValue(); System.out.println('Up to two decimal places: ' + newNum); } } 

Saída:

 Double Number: 12.4565652239 Up to two decimal places: 12.46