Двойное десятичное форматирование в Java

У меня возникли проблемы с форматированием десятичных знаков двойки. Если у меня двойное значение, например. 4.0, как мне форматировать десятичные знаки так, чтобы вместо него было 4.00?

Ответ 1

Один из способов использования NumberFormat.

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));

Вывод:

4.00

Ответ 2

С помощью Java 8 вы можете использовать метод format..: -

System.out.format("%.2f", 4.0); // OR

System.out.printf("%.2f", 4.0); 
  • f используется для значения floating.
  • 2 после десятичного знака, число десятичных знаков после .

Для большинства версий Java вы можете использовать DecimalFormat: -

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));

Ответ 3

Используйте String.format:

String.format("%.2f", 4.52135);

Ответ 4

Используя String.format, вы можете сделать это:

double price = 52000;
String.format("$%,.2f", price);

Обратите внимание на запятую, которая отличает ее от ответа @Vincent

Вывод:

$52,000.00

Хорошим ресурсом для форматирования является официальная java-страница по теме

Ответ 5

Вы всегда можете использовать статический метод printf from System.out - вы должны реализовать соответствующий форматтер; это экономит кучу пространства, в котором вам нужны другие примеры.

Пример:

System.out.format("%.4f %n", 4.0); 

System.out.printf("%.2f %n", 4.0); 

Сохраняет кучу пространства, которое является довольно большим бонусом, тем не менее я придерживаюсь мнения, что этот пример намного более управляем, чем любой другой ответ, тем более, что большинство программистов знают функцию printf из C (Java немного меняет функцию/метод).

Ответ 6

new DecimalFormat("#0.00").format(4.0d);

Ответ 7

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));

Ответ 8

Альтернативным методом является метод setMinimumFractionDigits из класса NumberFormat.

Здесь вы в основном указываете, сколько чисел вы хотите отобразить после десятичной точки.

Таким образом, ввод 4.0 будет производить 4.00, если ваше указанное количество равно 2.

Но если ваш вкладка Double содержит больше указанной суммы, она берет указанную минимальную сумму, затем добавляет еще одну цифру округленное вверх/вниз

Например, 4.15465454 с минимальным количеством из 2 будет выдавать 4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

Попробуйте в Интернете

Ответ 9

Работает 100%.

import java.text.DecimalFormat;

public class Formatting {

    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;

        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");

        System.out.println("Value: " + df.format(value));
    }

}

Ответ 10

Есть много способов сделать это. Те приведены ниже:

Предположим, ваш оригинальный номер указан ниже:

 double number = 2354548.235;

Используя NumberFormat:

NumberFormat formatter = new DecimalFormat("#0.00");
    System.out.println(formatter.format(number));

Используя String.format:

System.out.println(String.format("%,.2f", number));

Используя DecimalFormat и шаблон:

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
        DecimalFormat decimalFormatter = (DecimalFormat) nf;
        decimalFormatter.applyPattern("#,###,###.##");
        String fString = decimalFormatter.format(number);
        System.out.println(fString);

Использование DecimalFormat и шаблона

DecimalFormat decimalFormat = new DecimalFormat("############.##");
        BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
        System.out.println(formattedOutput);

Во всех случаях вывод будет: 2354548.23

Примечание:

Во время округления вы можете добавить RoundingMode в ваш форматтер. Вот несколько режимов округления, приведенных ниже:

    decimalFormat.setRoundingMode(RoundingMode.CEILING);
    decimalFormat.setRoundingMode(RoundingMode.FLOOR);
    decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    decimalFormat.setRoundingMode(RoundingMode.UP);

Вот импорт:

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

Ответ 11

Вы можете использовать любой из следующих способов

  1. Если вы используете java.text.DecimalFormat

    DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance(); 
    decimalFormat.setMinimumFractionDigits(2); 
    System.out.println(decimalFormat.format(4.0));
    

    ИЛИ

    DecimalFormat decimalFormat =  new DecimalFormat("#0.00"); 
    System.out.println(decimalFormat.format(4.0)); 
    
  2. Если вы хотите преобразовать его в простой формат строки

    System.out.println(String.format("%.2f", 4.0)); 
    

Весь приведенный выше код напечатает 4,00

Ответ 12

Первый импорт NumberFormat. Затем добавьте следующее:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

Это даст вам два десятичных знака и пометит знак доллара, если он имеет дело с валютой.

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;

    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }

}

Ответ 13

Вы можете сделать это следующим образом:

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

Ответ 14

Я знаю, что это старая тема, но если вам действительно нравится этот период вместо запятой, просто сохраните свой результат как X, 00 в String, а затем просто просто измените его на период, чтобы получить x.00

Самый простой способ - просто заменить.

String var = "X,00";
String newVar = var.replace(",",".");

Вывод будет X.00, который вам нужен. Также, чтобы сделать это легко, вы можете сделать все это на одном и сохранить его в двойной переменной:

Double var = Double.parseDouble(("X,00").replace(",",".");

Я знаю, что этот ответ сейчас не полезен, но, возможно, кто-то, кто проверяет этот форум, будет искать быстрое решение, подобное этому.