Заполнение целочисленной части Java

Извините, я изначально хотел сделать это в PHP-заполнении целочисленной части PHP, но понял, что сделаю это на Java в другой части кода

Поэтому мне нужно отформатировать числа с целой частью не менее 2 символов

2.11 -> 02.11
22.11 -> 22.11
222.11 -> 222.11
2.1111121 -> 02.1111121

double x=2.11; 
System.out.println(String.format("%08.5f", x));

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

String.format("%02d%s", (int) x, String.valueOf(x-(int) x).substring(1))

совершенно некрасиво и неточно (дает 02.1099...)

new DecimalFormat("00.#############").format(x)

будет обрезать плавающую часть

спасибо за лучшие решения

2 ответа

Решение

Лучшее, что я мог прийти с

public static String pad(String s){
    String[] p = s.split("\\.");
    if (2 == p.length){
        return String.format("%02d.%s", Integer.parseInt(p[0]), p[1]);
    }
    return String.format("%02d", Integer.parseInt(p[0]));
}

pad(String.valueOf(1.11111118)) -> 01.11111118

Вот одна строка, использующая DecimalFormat:

new DecimalFormat("00." + (x + "").replaceAll(".", "#")).format(x)

Он форматирует ваш десятичный знак как 00.#############..., где длина "#############..." берется из длины вашего десятичного числа ("#" в избытке ничего не делает).

Ты можешь использовать String.valueOf(x) на месте (x + "") если хочешь.

Другие вопросы по тегам