Truncar duplo em Java
-
Use
DecimalFormat
para truncar duplo em Java -
Use
BigDecimal
para truncar duplo em Java - Use a biblioteca comum do Apache para truncar decimais em Java
-
Use
java.lang.Math
para truncar decimais em Java
Neste artigo, veremos como truncar ou arredondar um número para n pontos decimais em Java. Java fornece dois tipos primitivos para armazenar valores decimais que são double e float. Recomenda-se usar a classe BigDecimal
para valores precisos ou arredondamentos.
Use DecimalFormat
para truncar duplo em Java
DecimalFormat
é uma subclasse de NumberFormat
que pode formatar números decimais usando o padrão de formatação fornecido. Aqui no código abaixo, criamos um objeto de DecimalFormat
passando um padrão de formatação adequado. Podemos chamar o método format()
no objeto decimatFormat
e passar nossa variável dupla d
como um parâmetro.
O método format()
retorna uma string que é truncada, conforme mostrado na saída.
import java.text.DecimalFormat;
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
String pattern = "#.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern);
String formattedDouble = decimalFormat.format(d);
System.out.println("Formatted double d = " + formattedDouble);
}
}
Resultado:
Formatted double d = 9.457
Use BigDecimal
para truncar duplo em Java
Em Java, BigDecimal
são números decimais com sinal de precisão arbitrária imutáveis. Ele fornece controle sobre escala e precisão. Criamos um objeto BigDecimal
passando o double convertido em string, evitando problemas com a representação de valores aproximados.
Em seguida, chamamos o método setScale(int newScale, RoundingMode roundingMode)
neste objeto BigDecimal
bd
, que leva dois argumentos: a escala de BigDecimal a ser retornada e o outro é o modo de arredondamento a ser aplicado. O modo RoundingMode.FLOOR
é arredondado para o infinito negativo.
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
BigDecimal bd = new BigDecimal(String.valueOf(d));
BigDecimal rounded = bd.setScale(2, RoundingMode.FLOOR);
System.out.println("BigDecimal rounded off : " + rounded);
}
}
Resultado:
BigDecimal rounded off : 9.45
Use a biblioteca comum do Apache para truncar decimais em Java
Podemos conseguir o mesmo por esta biblioteca cuja dependência maven é fornecida abaixo.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.5</version>
</dependency>
Podemos usar o método Precision.round()
desta biblioteca para formatar decimal. Este método leva dois argumentos, um é a variável decimal a ser formatada e escala. Precisamos de 4 dígitos após o ponto decimal; portanto, essa é a escala de que precisamos. A saída mostra que os dígitos decimais estão truncados.
import org.apache.commons.math3.util.Precision;
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
double doubleP = Precision.round(d, 4);
System.out.println("Precision rounded off : " + doubleP);
}
}
Resultado:
Precision rounded off : 9.4569
Use java.lang.Math
para truncar decimais em Java
Essa é outra maneira de arredondar números decimais em Java. O método Math.pow()
controla o número n
de casas decimais multiplicando e dividindo por 10n. Criamos uma dupla variável scale
usando este método que leva dois argumentos, base 10 e potência 3.
Math.round()
em Java é usado para arredondar um número para seu inteiro mais próximo. Isso é feito adicionando 1/2 ao número, falando sobre o resultado e convertendo o resultado em um tipo de dados inteiro. Este método não é recomendado, pois às vezes trunca o valor incorretamente.
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
double scale = Math.pow(10, 3);
double doubleM1 = Math.round(d * scale) / scale;
System.out.println("Math1 Rounded off: " + doubleM1);
}
}
Resultado:
Math Rounded off: 9.45
Math1 Rounded off: 9.457
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn