Я сомневаюсь в этом. Проблема в том, что 100 никогда не бывает 100, если это число с плавающей запятой, обычно это 99,99999999999 или 100,0000001 или что-то в этом роде.
Если вы хотите отформатировать его таким образом, вы должны определить эпсилон, то есть максимальное расстояние от целого числа, и использовать целочисленное форматирование, если разница меньше, и плавающее в противном случае.
Нечто подобное могло бы сработать:
public String formatDecimal(float number) {
float epsilon = 0.004f; // 4 tenths of a cent
if (Math.abs(Math.round(number) - number) < epsilon) {
return String.format("%10.0f", number); // sdb
} else {
return String.format("%10.2f", number); // dj_segfault
}
}