Подтвердить что ты не робот

Форматирование с использованием printf и формата

В следующей программе

class ZiggyTest2 {

    public static void main(String[] args){     

        double x = 123.456;
        char c = 65;
        int i = 65;

        System.out.printf("%s",x);
        System.out.printf("%b",x);
        System.out.printf("%c",c);
        System.out.printf("%5.0f",x);
        System.out.printf("%d",i);
    }       
}

Выходной сигнал

123.456trueA  12365

Может кто-нибудь объяснить, как двойное значение (т.е. 123.456) преобразуется в логическое (т.е. true)

Я прошу, потому что я знаю, что java не позволяет использовать числа для логических значений. Например, в Java

не допускается следующее:
if (5) {
 //do something
}

Спасибо

4b9b3361

Ответ 1

для "% b": Если аргумент arg равен null, тогда результат будет "false". Если arg является логическим или логическим, то результатом является строка, возвращаемая String.valueOf(). В противном случае результат будет "истинным".

ссылка

Ответ 2

В документации API явно указано, почему.

Если аргумент arg равен null, тогда результат будет "false". Если arg является логическим или логическим, то результатом является строка, возвращаемая String.valueOf(). В противном случае результат будет "истинным".

Ответ 3

Так как значение имеет тип double, и так конвертер %b работает со значениями этого типа.