удерживайте Zero после точки в делении с двойной [дубликат]

Почему вы не должны и , когда вы должны использовать регулярные выражения?

Во-первых, обычное неправильное выражение: регулярные выражения не предназначены для «синтаксического анализа» ] HTML. Regexes может, однако, «извлечь» данные. Извлечение - это то, для чего они созданы. Основным недостатком выработки HTML-выражения в правильных инструментариях SGML или базовых синтаксических анализаторов XML является их синтаксическое усилие и различная надежность.

Считайте, что создание несколько надежного HTML-выражения regex:

]+id="(\d+)".+?    ]+href="(http://[^">]+)"[^>]*>([^<>]+).+?

является менее читаемым, чем простой эквивалент phpQuery или QueryPath:

$div->find(".stationcool a")->attr("title");

Существуют, однако, конкретные варианты использования, в которых они могут помочь.

  • Многие интерфейсы обхода DOM не показать комментарии HTML (.+?)/ и обработать остаток, используя более простые интерфейсы парсера HTML.

    Примечание. У меня на самом деле есть это приложение , где я использую разбор XML и регулярные выражения альтернативно. На прошлой неделе разразился синтаксический анализ PyQuery, и регулярное выражение все еще работало. Да, странно, и я не могу объяснить это сам. Но так получилось. Поэтому, пожалуйста, не голосуйте за реальные соображения, потому что это не соответствует регулярному выражению = evil mem. Но давайте также не будем проголосовать за это слишком много. Это всего лишь побочный сигнал для этой темы.

84
задан james.garriss 4 January 2016 в 15:47
поделиться

12 ответов

Один из способов будет использовать NumberFormat .

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

Выход:

4.00

170
ответ дан kosa 26 August 2018 в 08:09
поделиться

Работает 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
ответ дан aboger 26 August 2018 в 08:09
поделиться

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

Попробовать в Интернете

0
ответ дан achAmháin 26 August 2018 в 08:09
поделиться

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

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
-3
ответ дан Baz 26 August 2018 в 08:09
поделиться

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

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

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

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

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

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

-4
ответ дан Edgar Rivas 26 August 2018 в 08:09
поделиться

С помощью 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));
50
ответ дан ericn 26 August 2018 в 08:09
поделиться

Первый импорт 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
ответ дан J0e3gan 26 August 2018 в 08:09
поделиться

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

Пример:

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

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

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

6
ответ дан Lewis Robbins 26 August 2018 в 08:09
поделиться
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
3
ответ дан Michael Zilbermann 26 August 2018 в 08:09
поделиться

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

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

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

Выход:

$52,000.00

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

12
ответ дан ojonugwa ochalifu 26 August 2018 в 08:09
поделиться
new DecimalFormat("#0.00").format(4.0d);
3
ответ дан Subhrajyoti Majumder 26 August 2018 в 08:09
поделиться

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

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

34
ответ дан Vincent Mimoun-Prat 26 August 2018 в 08:09
поделиться
Другие вопросы по тегам:

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