Truncar duplo em Java

Rupam Yadav 12 outubro 2023
  1. Use DecimalFormat para truncar duplo em Java
  2. Use BigDecimal para truncar duplo em Java
  3. Use a biblioteca comum do Apache para truncar decimais em Java
  4. Use java.lang.Math para truncar decimais em Java
Truncar duplo 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 Yadav avatar Rupam Yadav avatar

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

Artigo relacionado - Java Double