Форматирование с использованием printf и format - PullRequest
33 голосов
/ 25 декабря 2011

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

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
}

Спасибо

Ответы [ 3 ]

98 голосов
/ 25 декабря 2011

для "% b": Если аргумент arg равен нулю, то результатом является "ложь".Если arg - логическое значение или логическое значение, то результатом является строка, возвращаемая функцией String.valueOf ().В противном случае результат будет «верным».

ссылка

10 голосов
/ 25 декабря 2011

Документация API , кажется, четко указывает, почему.

Если аргумент arg равен нулю, то результатом является «ложь». Если arg - логическое значение или логическое значение, то результатом является строка, возвращаемая String.valueOf (). В противном случае результат «true».

0 голосов
/ 25 декабря 2011

Поскольку значение имеет тип double, и именно так %b работает со значениями этого типа.

...