Что делает System.out.format («высота на 3,1% больше длины \ n», в процентах);делать на Java? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть переменная с именем - double percentage, и я хотел напечатать ее, используя

System.out.format("height is %3.1f percent of the length\n",percentage);

Когда я не ввожу значение для высоты, он возвращает NaN процент от длины,Что именно делает System.out.format()?

А что означает NaN и почему оно отображается в выходном сообщении?

1 Ответ

0 голосов
/ 23 октября 2019

Это не то, что делает 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
...