In Java, quando utilizziamo un tipo di dati double prima di una variabile, rappresenta 15 cifre dopo il punto decimale. Ma a volte sono necessarie solo due cifre decimali dopo la virgola per rappresentare rupie e altre unità. Quindi, in questa sezione, discuteremo di modi per arrotondare il doppio e il float fino a due cifre decimali insieme ad un esempio corretto e programmi Java.
quante città negli Stati Uniti
Java fornisce i seguenti tre modi per visualizzare double in 2 cifre decimali:
- Utilizzo del formato decimale ('0.00')
- Utilizzo del metodo String.format() ('%.2f')
- Utilizzando BigDecimal
Discutiamo i modi di cui sopra uno per uno.
Utilizzando DecimalFormat
Giava DecimalFormat è una sottoclasse concreta della classe NumberFormat utilizzata per formattare i numeri decimali. la classe fornisce il setRoundingMode() metodo per visualizzare un numero doppio fino a due cifre decimali.
Sintassi:
public void setRoundingMode(RoundingMode roundingMode)
Accetta la modalità di arrotondamento come parametro e sovrascrive il metodo setRoundingMode() di NumberFormat classe. Lancia NullPointerException se non specifichiamo alcun roundingMode. Nella tabella seguente vengono descritte le diverse modalità di arrotondamento.
Metti il numero | SU | GIÙ | SOFFITTO | PAVIMENTO | MEZZA_SU | METÀ_GIÙ | MEZZA_PARI | NON NECESSARIO |
---|---|---|---|---|---|---|---|---|
5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | lancia ArithmeticException |
2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | lancia ArithmeticException |
1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | lancia ArithmeticException |
1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | lancia 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 | lancia ArithmeticException |
-1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | lancia ArithmeticException |
-2,5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | lancia ArithmeticException |
-5.5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | lancia ArithmeticException |
Abbiamo utilizzato un altro metodo della classe DecimalFormat è il formato() metodo. Formatta una stringa per produrre una stringa.
Sintassi:
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
Il metodo accetta tre parametri: numero, risultato e posizione. Ma gli ultimi due parametri sono facoltativi. Restituisce la stringa numerica formattata. Il metodo lancia ArithmeticException Se Modalità di arrotondamento è impostato per NON NECESSARIO.
TwoDecimalPlace1.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 } }
Produzione:
Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99
Utilizzo del metodo String.format()
Java fornisce anche il metodo format() per formattare il numero. Appartiene alla classe String. Utilizzando il metodo, è possibile formattare di conseguenza qualsiasi numero e stringa.
Per modificare il numero fino a due cifre decimali, utilizziamo %.2f per formattare il numero. Tieni presente che non possiamo arrotondare il numero nel metodo String.format(), arrotondando sempre alla metà.
bash se altro
Sintassi:
public static String format(String format, Object... args)
Il metodo accetta i seguenti due parametri:
formato: È una stringa formattata che vogliamo.
argomenti: Questi sono gli argomenti a cui fanno riferimento gli identificatori di formato nella stringa di formato.
Restituisce la stringa formattata. Lancia IllegalFormatException se la stringa di formato contiene una sintassi non valida. Lancia anche NullPointerException se specifichiamo il formato come null.
TwoDecimalPlace2.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); } }
Produzione:
Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99
Utilizzando BigDecimal
Possiamo anche utilizzare la classe Java BigDecimal per visualizzare un numero fino a due cifre decimali. Appartiene a java.math.BigDecimal pacchetto. Estende la classe Number e implementa il file Paragonabile interfaccia.
stringa in int
La classe fornisce il metodo setScale(). La sintassi è la seguente:
Sintassi:
setScale(int newScale, RoundingMode roundingMode)
Il metodo accetta due parametri:
nuova scala: La scala del valore BigDecimal da restituire.
np dove
modalità di arrotondamento: La modalità di arrotondamento che vogliamo applicare.
Restituisce il BigDecimal la cui scala è il valore specificato e il cui valore non scalato è determinato moltiplicando o dividendo il valore non scalato di questo BigDecimal per la potenza appropriata di dieci per mantenere il suo valore complessivo.
Il metodo lancia il file ArithmeticException Se Modalità di arrotondamento è impostato per NON NECESSARIO . RoundingMode è un'enumerazione che fornisce RoundingMode discusso in precedenza.
Un altro metodo che abbiamo utilizzato in questo programma è BigDecimal.doubleValue(). Converte BigDecimal in a Doppio numero. Vediamo un esempio.
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); } }
Produzione:
Double Number: 12.4565652239 Up to two decimal places: 12.46