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

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

+103
источник поделиться
14 ответов

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

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

Вывод:

4.00

+201
источник

С помощью 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));
+65
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

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

+39
источник

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

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

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

Вывод:

$52,000.00

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

+17
источник

Вы всегда можете использовать статический метод 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);
+3
источник
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
+3
источник

Альтернативным методом является метод 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));

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

+1
источник

Работает 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));
    }

}
0
источник

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

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

 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;
0
источник

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

  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

0
источник

Первый импорт 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));
    }

}
-2
источник

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

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
-3
источник

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

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

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

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

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

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

-4
источник

Посмотрите другие вопросы по меткам или Задайте вопрос