Я просмотрел несколько тем, связанных с форматированием чисел. По большей части работает, кроме значения 3.101. Float и Double использовались вместе с форматами ## и 00.
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args)
{
Float d1 = -3.1011f;
Double ds = -3.1011;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println (Double.valueOf(df.format(d1)));
System.out.println (Double.valueOf(df.format(ds)));
DecimalFormat df2 = new DecimalFormat("#.00");
System.out.println (Double.valueOf(df2.format(d1)));
System.out.println (Double.valueOf(df2.format(ds)));
}
}
Результат:
-3.1
-3.1
-3.1
-3.1
Ожидаемый результат:
-3.10
-3.10
-3.10
-3.10
Как упоминалось выше, это работает для всех других чисел, которые я тестировал. По какой-то причине это вызывает проблему.
Любые идеи относительно того, что делает это число таким особенным и какой дополнительный шаг необходим для получения 2-й цифры?
Имейте в виду, ключ в том, что я хочу в конечном итоге вернуть Float или Double.