expr numeric equality operator
Uses string equality if either of the arguments cannot be interpreted as numeric, but if you actually want string equality, use the eq operator instead.
% expr { 1 == 2 } 0 % expr { 1 == 1 } 1 % expr { 0x1f == 31 } 1
To show you should be careful comparing floats:
% expr { 1 == 1.0000000000000001110223 } 1
Comparing with zero is a lot safer:
expr { 0 eq 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 } 0
I think Tcl works with +0 and -0.