Metamorphing Machine I rather be this walking metamorphosis
than having that old formed opinion about everything!

WTF, VB6? Part 1

Inspired by the late WTF Javascript? site, I'll start a series of WTF, VB6? with the most peculiar things I collected over the years about VB6's idiosyncracies.

If you read my Not, And, Or, Xor, Imp, Eqv, and Null. Oh, my! post, you'll know that the canonical value for False in VB6 is zero, and the canonical value for True is -1.
So, how can the comparison bellow prints True?

Debug.Print True = "1"

When dealing with different data types, VB6 employs implicit conversion.
I don't have access to VB6's source code, but it seems these are its rules when dealing with Boolean and String:
Conversion to Double has its own set of rules: So, we can see that the "1" string above is converted to double 1.0, and being different from zero, it is further converted to boolean True. That makes the comparison succeed.

Now, keeping these rules in mind, can you explain why all comparison below prints "True"?

Debug.Print True = "0.1"
Debug.Print True = "0,1"
Debug.Print False = "0.0"
Debug.Print False = "0,0"

Andrej Biasic
2020-04-15