Difference in boolean behavior between Number and Float

The documentation says that a 0 is false, anything else is true. A number variable = 0 is false as an if condition, anything else is true so this matches. A float variable = 0.0 is true. Unless Garmin is using some non-standard float format, 0 and integers within fairly large limits can be represented exactly as if they were integers.  Changing the if from (x) to (x != 0.0) then flows correctly if x is 0 or non-zero, so treating all floats as true seems like either a documentation bug or a compiler bug.