In the following program
class ZiggyTest2 {
    public static void main(String[] args){     
        double x = 123.456;
        char c = 65;
        int i         
        for "%b" : If the argument arg is null, then the result is "false". If arg is a boolean or Boolean, then the result is the string returned by String.valueOf(). Otherwise, the result is "true".
reference
Because the value is of type double and this is how the %b converter works with values of this type.
The API documentation seems to clearly state why.
If the argument arg is null, then the result is "false". If arg is a boolean or Boolean, then the result is the string returned by String.valueOf(). Otherwise, the result is "true".