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
Java fornece as três maneiras a seguir de exibir double em 2 casas decimais:
- Usando DecimalFormat ('0,00')
- Usando o método String.format() ('%.2f')
- 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