Формат чисел с плавающей запятой фиксированной ширины
В Java у меня есть следующий код:
System.out.printf("%05.5f", myFloat);
Это хорошо работает для любых чисел, которые меньше 10, но для любого числа 10 или больше десятичные разряды обрезаются до 5, но это не компенсирует тот факт, что число перед десятичной запятой длиннее. Я хотел бы сделать одно из следующего:
12.3456
1.23456
(т. е. одинаковое количество цифр) или:
12.34567
2.34567
(то есть, пробел с пробелами, чтобы десятичные точки и последние цифры совпадали).
Я был бы счастлив, если бы я мог заставить любого работать (оба были бы еще лучше!).
Какие-нибудь мысли? Спасибо!
1 ответ
Я понял, как заставить это сделать:
12.34567
2.34567
Учитывая формат строки, как "%x.yf"
, будет форматировать с минимальной шириной x
и точность после десятичной точки y
, Так как цифры до десятичной точки и сама десятичная точка учитываются до минимальной ширины (x
) ширина должна быть как минимум на два больше, чем точность. В частности, если напечатано число, которое шире, чем минимальная ширина, оно не будет хорошо совмещаться со смежными линиями, поскольку эти строки будут короче. Например, если мы попробуем распечатать 10.1
а потом 1.1
с шириной 3 и точностью 1 мы получим:
10.1
1.1
Тем не менее, если мы используем ширину 4, 1.1
будет дополнен, потому что он не имеет минимальной ширины:
10.1
1.1