IsEmpty returns 1 when the field is empty and returns 0 when it contains something, regardless of what those contents are.

In your test of "Field = 0", because 0 is not quoted as a literal string it's checking two things: 1. is it empty & 2. Does it contain 0 as a number type data. Therefore leaving the field empty and putting a zero in it both return with a 1.

If you were to change your calculation to Field = "0", you would get your expected results. I added that field to your original file and have attached it. test_comparison_to_zero.fmp12 (180 KB)

No, the field [Test] is a number field, but the field near [Test = 0] is not formatted. I understand that there is no number (just a letter «x») in a number field and so te field contains a ZERO ... right?

It has to do with test::test being a number field. Notice how the bottom two (text instead of number) both do not equal zero. So the numeric value of "x" is 0.