logo

Два знака след десетичната запетая Java

В Java, когато използваме двоен тип данни преди променлива, той представлява 15 цифри след десетичната запетая. Но понякога изискваме само два знака след десетичната запетая, като за представяне на рупии и други единици. И така, в този раздел ще обсъдим начини за показване на двойно до два знака след десетичната запетая заедно с подходящ пример и Java програми.

Два знака след десетичната запетая Java

Java предоставя следните три начина за показване на двойно в 2 знака след десетичната запетая:

  1. Използване на DecimalFormat ('0.00')
  2. Използване на метода String.format() ('%.2f')
  3. Използване на BigDecimal

Нека обсъдим горните начини един по един.

Използване на DecimalFormat

Java DecimalFormat е конкретен подклас на класа NumberFormat, който се използва за форматиране на десетичните числа. класът осигурява setRoundingMode() метод за показване на двойно число до два знака след десетичната запетая.

Синтаксис:

 public void setRoundingMode(RoundingMode roundingMode) 

Той приема режим на закръгляване като параметър и отменя метода setRoundingMode() на NumberFormat клас. Хвърля се NullPointerException ако не посочим никакъв roundingMode. Следната таблица описва различните режими на закръгляване.

Поставете номер НАГОРЕ НАДОЛУ ТАВАН ЕТАЖ HALF_UP ПОЛУ_НАДОЛУ HALF_EVEN НЕНУЖНО
5.5 6 5 6 5 6 5 6 хвърляне на ArithmeticException
2.5 3 2 3 2 3 2 2 хвърляне на ArithmeticException
1.6 2 1 2 1 2 2 2 хвърляне на ArithmeticException
1.1 2 1 2 1 1 1 1 хвърляне на 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 хвърляне на ArithmeticException
-1,6 -2 -1 -1 -2 -2 -2 -2 хвърляне на ArithmeticException
-2,5 -3 -2 -2 -3 -3 -2 -2 хвърляне на ArithmeticException
-5,5 -6 -5 -5 -6 -6 -5 -6 хвърляне на ArithmeticException

Използвахме друг метод от класа DecimalFormat е формат () метод. Той форматира низ, за ​​да създаде низ.

Синтаксис:

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

Методът приема три параметъра номер, резултат и позиция. Но последните два параметъра не са задължителни. Връща форматирания числов низ. Методът хвърля ArithmeticException ако Режим на закръгляване е настроено на НЕНУЖНО.

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

Изход:

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

Използване на метода String.format().

Java също предоставя метода format() за форматиране на числото. Принадлежи към класа String. Чрез използването на метода можете да форматирате произволно число и съответно низ.

За да променим числото до два знака след десетичната запетая, използваме %.2f за форматиране на номера. Обърнете внимание, че не можем да закръглим числото в метода String.format(), като винаги закръгляме наполовина нагоре.

баш ако друго

Синтаксис:

 public static String format(String format, Object... args) 

Методът приема следните два параметъра:

формат: Това е форматиран низ, който искаме.

аргументи: Това са аргументите, посочени от спецификаторите на формата във форматния низ.

Връща форматирания низ. Хвърля се IllegalFormatException ако форматиращият низ съдържа незаконен синтаксис. Освен това хвърля NullPointerException ако посочим формата като 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); } } 

Изход:

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

Използване на BigDecimal

Можем също да използваме Java BigDecimal Class за показване на число до два знака след десетичната запетая. Принадлежи на java.math.BigDecimal пакет. Той разширява класа Number и имплементира Сравними интерфейс.

Класът предоставя метода setScale(). Синтаксисът е както следва:

Синтаксис:

 setScale(int newScale, RoundingMode roundingMode) 

Методът приема два параметъра:

нов мащаб: Мащабът на стойността BigDecimal, която трябва да бъде върната.

закръгляващ режим: Режимът на закръгляване, който искаме да приложим.

Той връща BigDecimal, чийто мащаб е указаната стойност и чиято немащабирана стойност се определя чрез умножаване или разделяне на немащабираната стойност на този BigDecimal на подходящата степен на десет, за да се запази общата му стойност.

Методът хвърля на ArithmeticException ако Режим на закръгляване е настроено на НЕНУЖНО . RoundingMode е enum, който предоставя RoundingMode, обсъден по-горе.

Друг метод, който сме използвали в тази програма е BigDecimal.doubleValue(). Той преобразува BigDecimal в a двойно номер. Да видим един пример.

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

Изход:

 Double Number: 12.4565652239 Up to two decimal places: 12.46