Обратите внимание, что String.format(format, args...)
- это в зависимости от локали , поскольку он форматирует с использованием локали пользователя по умолчанию, , то есть, вероятно, с запятыми и даже пробелами внутри как 123 456 789 или 123 456,789 , что может быть не совсем тем, что вы ожидаете.
Вы можете предпочесть использовать String.format((Locale)null, format, args...)
.
Например,
double f = 123456.789d;
System.out.println(String.format(Locale.FRANCE,"%f",f));
System.out.println(String.format(Locale.GERMANY,"%f",f));
System.out.println(String.format(Locale.US,"%f",f));
печать
123456,789000
123456,789000
123456.789000
и это то, что String.format(format, args...)
будет делать в разных странах.
РЕДАКТИРОВАТЬ Хорошо, так как было обсуждение формальностей:
res += stripFpZeroes(String.format((Locale) null, (nDigits!=0 ? "%."+nDigits+"f" : "%f"), value));
...
protected static String stripFpZeroes(String fpnumber) {
int n = fpnumber.indexOf('.');
if (n == -1) {
return fpnumber;
}
if (n < 2) {
n = 2;
}
String s = fpnumber;
while (s.length() > n && s.endsWith("0")) {
s = s.substring(0, s.length()-1);
}
return s;
}