Troncare il doppio in Java

Rupam Yadav 12 ottobre 2023
  1. Usa DecimalFormat per troncare il doppio in Java
  2. Usa BigDecimal per troncare il doppio in Java
  3. Usa la libreria comune di Apache per troncare i decimali in Java
  4. Usa java.lang.Math per troncare i decimali in Java
Troncare il doppio in Java

In questo articolo, vedremo come troncare o arrotondare un numero a n punti decimali in Java. Java fornisce due tipi primitivi per memorizzare valori decimali che sono double e float. Si consiglia di utilizzare la classe BigDecimal per valori precisi o arrotondamenti.

Usa DecimalFormat per troncare il doppio in Java

DecimalFormat è una sottoclasse di NumberFormat che può formattare i numeri decimali utilizzando il modello di formattazione fornito. Qui nel codice seguente, abbiamo creato un oggetto di DecimalFormat che passa un modello di formattazione adatto. Possiamo chiamare il metodo format() sull’oggetto decimatFormat e passare la nostra doppia variabile d come parametro.

Il metodo format() restituisce una stringa che viene troncata, come mostrato nell’output.

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

Produzione:

Formatted double d = 9.457

Usa BigDecimal per troncare il doppio in Java

In Java, i BigDecimal sono numeri decimali con segno e precisione arbitraria immutabili. Fornisce controllo su scala e precisione. Creiamo un oggetto BigDecimal passando il doppio convertito come stringa, evitando problemi con la rappresentazione di valori approssimativi.

Chiamiamo quindi il metodo setScale(int newScale, RoundingMode roundingMode) su questo oggetto BigDecimal bd, che accetta due argomenti: la scala di BigDecimal da restituire e l’altra è la modalità di arrotondamento da applicare. La modalità RoundingMode.FLOOR arrotonda verso l’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);
  }
}

Produzione:

BigDecimal rounded off : 9.45

Usa la libreria comune di Apache per troncare i decimali in Java

Possiamo ottenere lo stesso da questa libreria la cui dipendenza Maven è indicata di seguito.

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

Possiamo usare il metodo Precision.round() da questa libreria per formattare i decimali. Questo metodo accetta due argomenti, uno la variabile decimale da formattare e scalare. Abbiamo bisogno di 4 cifre dopo il punto decimale; quindi questa è la scala di cui abbiamo bisogno. L’output mostra che le cifre nel decimale sono troncate.

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

Produzione:

Precision rounded off : 9.4569

Usa java.lang.Math per troncare i decimali in Java

Questo è un altro modo per arrotondare i numeri decimali in Java. Il metodo Math.pow() controlla n il numero di cifre decimali moltiplicando e dividendo per 10n. Creiamo una doppia variabile scala usando questo metodo che prende due argomenti, base 10 e potenza 3.

Math.round() in Java viene utilizzato per arrotondare un numero all’intero più vicino. Questo viene fatto aggiungendo 1/2 al numero, parlando della base del risultato e convertendo il risultato in un tipo di dati intero. Questo metodo non è consigliato poiché a volte tronca il valore in modo errato.

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

Produzione:

Math Rounded off: 9.45
Math1 Rounded off: 9.457
Autore: Rupam Yadav
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

Articolo correlato - Java Double