Это не то, что делает format
- float
или double
могут иметь различимое значение, известное как NaN
, для "не числа", для математически неверного результата.
Если вы попытаетесь отформатировать такое значение NaN, то format
соответствующим образом представит его в виде строки "NaN.
Предположительно, у вас есть какие-то вычисления, приводящие к значению NaN. Может быть, естьарифметический операнд, который неинициализирован, хотя я ожидал, что это приведет к «неинициализированной» ошибке времени компиляции. Без этого кода я могу только догадываться, как вы получаете результат NaN.
В связи с этим вопрос SO: что означает NaN? - на самом деле это не дубликат из-за угла 'format' в данном вопросе.
IEEE 754информация о NaN и бесконечности из Википедии.
Простой пример:
class Nan {
public final static void main(String[] args) {
double a = 0, b = 0;
double c = a / b;
System.out.format("%f / %f = %f \n", a, b, c);
}
}
Результат:
$ java Nan
0.000000 / 0.000000 = NaN