logo

Dwa miejsca po przecinku Java

Kiedy w Javie używamy typu danych double przed zmienną, oznacza to 15 cyfr po przecinku. Czasami jednak potrzebujemy tylko dwóch miejsc po przecinku, np. w przypadku rupii i innych jednostek. Dlatego w tej części omówimy sposoby wyświetlania liczby podwójnej do dwóch miejsc po przecinku wraz z odpowiednim przykładem i programami Java.

Dwa miejsca po przecinku Java

Java udostępnia trzy następujące sposoby wyświetlania liczby podwójnej z dokładnością do 2 miejsc po przecinku:

konwersja daty na ciąg
  1. Korzystanie z formatu dziesiętnego („0,00”)
  2. Korzystanie z metody String.format() („%.2f”)
  3. Korzystanie z BigDecimal

Omówmy powyższe sposoby jeden po drugim.

Korzystanie z formatu dziesiętnego

Jawa Format dziesiętny jest konkretną podklasą klasy NumberFormat, która służy do formatowania liczb dziesiętnych. klasa zapewnia setRoundingMode() metoda wyświetlania liczby podwójnej do dwóch miejsc po przecinku.

Składnia:

 public void setRoundingMode(RoundingMode roundingMode) 

Akceptuje tryb zaokrąglania jako parametr i zastępuje metodę setRoundingMode() metody Format liczbowy klasa. Rzuca Wyjątek NullPointer jeśli nie określimy żadnego roundingMode. W poniższej tabeli opisano różne tryby zaokrąglania.

Umieść numer W GÓRĘ W DÓŁ SUFIT PODŁOGA POŁOWA_UP PÓŁ_DÓŁ PÓŁ_PARZYSTY NIEPOTRZEBNY
5.5 6 5 6 5 6 5 6 rzuć wyjątek arytmetyczny
2.5 3 2 3 2 3 2 2 rzuć wyjątek arytmetyczny
1.6 2 1 2 1 2 2 2 rzuć wyjątek arytmetyczny
1.1 2 1 2 1 1 1 1 rzuć wyjątek arytmetyczny
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 rzuć wyjątek arytmetyczny
-1,6 -2 -1 -1 -2 -2 -2 -2 rzuć wyjątek arytmetyczny
-2,5 -3 -2 -2 -3 -3 -2 -2 rzuć wyjątek arytmetyczny
-5,5 -6 -5 -5 -6 -6 -5 -6 rzuć wyjątek arytmetyczny

Użyliśmy innej metody klasy DecimalFormat to format() metoda. Formatuje ciąg znaków, aby utworzyć ciąg.

Składnia:

 public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) 

Metoda przyjmuje trzy parametry: liczbę, wynik i pozycję. Ale dwa ostatnie parametry są opcjonalne. Zwraca sformatowany ciąg liczbowy. Metoda rzuca Wyjątek arytmetyczny Jeśli Tryb zaokrąglania jest ustawione na NIEPOTRZEBNY.

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

Wyjście:

 Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99 

Korzystanie z metody String.format().

Java udostępnia także metodę format() służącą do formatowania liczby. Należy do klasy String. Za pomocą tej metody można odpowiednio sformatować dowolną liczbę i ciąg znaków.

wiek Shilpy Shetty

Aby zmienić liczbę z dokładnością do dwóch miejsc po przecinku, używamy %.2f aby sformatować numer. Należy pamiętać, że w metodzie String.format() nie można zaokrąglić liczby, zawsze zaokrąglając ją o połowę w górę.

Składnia:

porównywalna Java
 public static String format(String format, Object... args) 

Metoda przyjmuje dwa następujące parametry:

format: Jest to sformatowany ciąg znaków, który chcemy.

argumenty: Są to argumenty, do których odwołują się specyfikatory formatu w ciągu formatu.

Zwraca sformatowany ciąg. Rzuca Wyjątek IllegalFormat jeśli ciąg formatu zawiera nieprawidłową składnię. Również rzuca Wyjątek NullPointer jeśli określimy format jako 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); } } 

Wyjście:

 Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99 

Korzystanie z BigDecimal

Możemy również użyć klasy Java BigDecimal do wyświetlania liczby do dwóch miejsc po przecinku. To należy do java.math.BigDecimal pakiet. Rozszerza klasę Number i implementuje Porównywalny interfejs.

Klasa udostępnia metodę setScale(). Składnia jest następująca:

pole listy HTML

Składnia:

 setScale(int newScale, RoundingMode roundingMode) 

Metoda przyjmuje dwa parametry:

nowaSkala: Skala wartości BigDecimal, która ma zostać zwrócona.

zaokrąglanieTryb: Tryb zaokrąglania, który chcemy zastosować.

Zwraca wartość BigDecimal, której skala jest określoną wartością i której nieskalowana wartość jest określana przez pomnożenie lub podzielenie nieskalowanej wartości tego BigDecimal przez odpowiednią potęgę dziesięciu, aby zachować jej ogólną wartość.

Metoda rzuca Wyjątek arytmetyczny Jeśli Tryb zaokrąglania jest ustawione na NIEPOTRZEBNY . RoundingMode to wyliczenie, które zapewnia RoundingMode omówiony powyżej.

Python konwertuje bajty na ciąg znaków

Inną metodą zastosowaną w tym programie jest BigDecimal.doubleValue(). Konwertuje BigDecimal na podwójnie numer. Zobaczmy przykład.

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

Wyjście:

 Double Number: 12.4565652239 Up to two decimal places: 12.46