A. Yes 0.00 !== 0
is valid because they are not the same type
var_dump(0.00,0);
Output
float 0
int 0
B. 0 !== "0"
is valid because they are not the same type
var_dump(0,"0");
Output
int 0
string '0' (length=1)
C. Why don't I want to drop the ===
var_dump("hello" == 0 ); true
var_dump("hello" === 0 ); false
$a === $b TRUE if $a is equal to $b, and they are of the same type.
I guess this is what you want
echo (int) bcmul('0.00', '000.00', 2) === (int) '0' ? ' Y ' : ' N ';
^ ^