У Java, коли ми використовуємо тип даних double перед змінною, він представляє 15 цифр після коми. Але іноді нам потрібно лише два десяткові знаки після коми, наприклад, для представлення рупій та інших одиниць. Отже, у цьому розділі ми обговоримо способи відображення подвійного до двох знаків після коми разом із належним прикладом і програмами на Java.
Java надає наступні три способи відображення подвійного числа через 2 знаки після коми:
- Використання DecimalFormat ('0.00')
- Використання методу String.format() ('%.2f')
- Використання BigDecimal
Давайте обговоримо наведені вище способи один за іншим.
Використання DecimalFormat
Java DecimalFormat є конкретним підкласом класу NumberFormat, який використовується для форматування десяткових чисел. клас забезпечує setRoundingMode() метод відображення подвійного числа до двох знаків після коми.
Синтаксис:
public void setRoundingMode(RoundingMode roundingMode)
Він приймає режим округлення як параметр і замінює метод setRoundingMode(). NumberFormat клас. Це кидає NullPointerException якщо ми не вказуємо округленняMode. У наступній таблиці описано різні режими округлення.
Поставте номер | ВГОРУ | ВНИЗ | СТЕЛЯ | ПОЛ | 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 } }
Вихід:
npm install команда
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)
Метод приймає два параметри:
newScale: Масштаб значення BigDecimal, яке буде повернуто.
Режим округлення: Режим округлення, який ми хочемо застосувати.
Він повертає BigDecimal, масштабом якого є вказане значення, і чиє немасштабоване значення визначається множенням або діленням немасштабованого значення цього BigDecimal на відповідний ступінь десяти, щоб зберегти його загальне значення.
Метод кидає ArithmeticException якщо Режим округлення встановлено на НЕПОТРІБНО . RoundingMode — це перелік, який надає 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