Wanneer we in Java een dubbel gegevenstype vóór een variabele gebruiken, vertegenwoordigt dit 15 cijfers na de komma. Maar soms hebben we slechts twee decimalen na de komma nodig, bijvoorbeeld om roepies en andere eenheden weer te geven. In deze sectie gaan we het dus hebben over de manieren om dubbel tot twee decimalen weer te geven samen met een goed voorbeeld en Java-programma's.
Java biedt de volgende drie manieren om dubbel in 2 decimalen weer te geven:
- Decimaalformaat gebruiken ('0.00')
- Met behulp van de String.format()-methode ('%.2f')
- BigDecimal gebruiken
Laten we de bovenstaande manieren één voor één bespreken.
Decimaalformaat gebruiken
Java Decimaalformaat is een concrete subklasse van de klasse NumberFormat die wordt gebruikt om de decimale getallen op te maken. de klas biedt de setRoundingMode() methode om een dubbel getal tot twee decimalen weer te geven.
Syntaxis:
public void setRoundingMode(RoundingMode roundingMode)
Het accepteert de afrondingsmodus als parameter en overschrijft de methode setRoundingMode() van de Nummer formaat klas. Het gooit NullPointerException als we geen roundingMode specificeren. De volgende tabel beschrijft de verschillende afrondingsmodi.
Zet nummer | OMHOOG | OMLAAG | PLAFOND | VLOER | HALF_UP | HALF_DOWN | HALF_EVEN | ONNODIG |
---|---|---|---|---|---|---|---|---|
5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | gooi ArithmeticException |
2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | gooi ArithmeticException |
1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | gooi ArithmeticException |
1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | gooi 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 | gooi ArithmeticException |
-1,6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | gooi ArithmeticException |
-2,5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | gooi ArithmeticException |
-5,5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | gooi ArithmeticException |
We hebben een andere methode van de klasse DecimalFormat gebruikt, namelijk de formaat() methode. Het formatteert een string om een string te produceren.
Syntaxis:
stapel in ds
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
De methode accepteert drie parameters: nummer, resultaat en positie. Maar de laatste twee parameters zijn optioneel. Het retourneert de opgemaakte getalreeks. De methode gooit Rekenkundige uitzondering als Afrondingsmodus ingesteld op ONNODIG.
TweeDecimalePlaats1.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 } }
Uitgang:
Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99
Met behulp van de String.format()-methode
Java biedt ook de methode format() om het getal op te maken. Het behoort tot de klasse String. Door de methode te gebruiken, kan men elk getal en elke tekenreeks dienovereenkomstig opmaken.
niet-deterministische eindige automaten
Om het getal tot op twee decimalen te wijzigen, gebruiken we %.2f om het getal op te maken. Houd er rekening mee dat we het getal in de methode String.format() niet kunnen afronden, waarbij we altijd de helft naar boven afronden.
Syntaxis:
public static String format(String format, Object... args)
De methode accepteert de volgende twee parameters:
formaat: Het is een geformatteerde string die we willen.
argumenten: Dit zijn de argumenten waarnaar wordt verwezen door de formaatspecificaties in de formaattekenreeks.
Het retourneert de opgemaakte tekenreeks. Het gooit IllegaleFormatException als de formatstring een illegale syntaxis bevat. Het gooit ook NullPointerException als we het formaat als null opgeven.
TweeDecimalePlaats2.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); } }
Uitgang:
Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99
BigDecimal gebruiken
We kunnen ook Java BigDecimal Class gebruiken voor het weergeven van een getal tot twee decimalen. Het is van java.math.BigDecimal pakket. Het breidt de klasse Number uit en implementeert de Vergelijkbaar koppel.
De klasse biedt de methode setScale(). De syntaxis is als volgt:
Syntaxis:
setScale(int newScale, RoundingMode roundingMode)
De methode accepteert twee parameters:
nieuwSchaal: De schaal van de BigDecimal-waarde die moet worden geretourneerd.
afrondingsmodus: De afrondingsmodus die we willen toepassen.
Het retourneert de BigDecimal waarvan de schaal de opgegeven waarde is en waarvan de ongeschaalde waarde wordt bepaald door de ongeschaalde waarde van deze BigDecimal te vermenigvuldigen of te delen door de juiste macht van tien om de algehele waarde te behouden.
De methode gooit de Rekenkundige uitzondering als Afrondingsmodus ingesteld op ONNODIG . De RoundingMode is een opsomming die de hierboven besproken RoundingMode biedt.
k clusteralgoritme
Een andere methode die we in dit programma hebben gebruikt is BigDecimal.doubleValue(). Het converteert BigDecimal naar a dubbele nummer. Laten we een voorbeeld bekijken.
TweeDecimalePlaats3.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); } }
Uitgang:
Double Number: 12.4565652239 Up to two decimal places: 12.46