Truncar doble en Java

Rupam Yadav 12 octubre 2023
  1. Utilice DecimalFormat para truncar el doble en Java
  2. Utilice BigDecimal para truncar Double en Java
  3. Utilice la biblioteca común de Apache para truncar decimal en Java
  4. Utilice java.lang.Math para truncar decimal en Java
Truncar doble en Java

En este artículo, veremos cómo truncar o redondear un número an puntos decimales en Java. Java proporciona dos tipos primitivos para almacenar valores decimales que son dobles y flotantes. Se recomienda utilizar la clase BigDecimal para valores precisos o redondeos.

Utilice DecimalFormat para truncar el doble en Java

DecimalFormat es una subclase de NumberFormat que puede formatear números decimales usando el patrón de formato proporcionado. Aquí, en el código siguiente, creamos un objeto de DecimalFormat pasando un patrón de formato adecuado. Podemos llamar al método format() en el objeto decimatFormat y pasar nuestra variable doble d como parámetro.

El método format() devuelve una cadena truncada, como se muestra en la salida.

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);
  }
}

Producción :

Formatted double d = 9.457

Utilice BigDecimal para truncar Double en Java

En Java, BigDecimal son números decimales con signo de precisión arbitraria e inmutables. Proporciona control sobre la escala y la precisión. Creamos un objeto BigDecimal pasando el doble convertido como una cadena, evitando problemas con la representación de valores aproximados.

Luego llamamos al método setScale(int newScale, RoundingMode roundingMode) en este objeto BigDecimal bd, que toma dos argumentos: la escala de BigDecimal que se devolverá y el otro es el modo de redondeo que se aplicará. El modo RoundingMode.FLOOR se redondea hacia el 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);
  }
}

Producción :

BigDecimal rounded off : 9.45

Utilice la biblioteca común de Apache para truncar decimal en Java

Podemos lograr lo mismo con esta biblioteca cuya dependencia de maven se indica a continuación.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.5</version>
</dependency>

Podemos usar el método Precision.round() de esta biblioteca para formatear decimal. Este método toma dos argumentos, uno la variable decimal a formatear y escalar. Necesitamos 4 dígitos después del punto decimal; de ahí que esa sea la escala que necesitamos. La salida muestra que los dígitos del decimal están 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);
  }
}

Producción :

Precision rounded off : 9.4569

Utilice java.lang.Math para truncar decimal en Java

Esta es otra forma de redondear números decimales en Java. El método Math.pow() controla n número de decimales multiplicando y dividiendo por 10n. Creamos una scale de doble variable utilizando este método que toma dos argumentos, base 10 y potencia 3.

Math.round() en Java se usa para redondear un número a su entero más cercano. Esto se hace agregando 1/2 al número, hablando del piso del resultado y convirtiendo el resultado en un tipo de datos entero. Este método no se recomienda ya que a veces trunca el valor de forma incorrecta.

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);
  }
}

Producción :

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

Artículo relacionado - Java Double