Troubles with inequality

Graham Samuel livfoss at mac.com
Wed Feb 4 10:02:42 EST 2015


Using LC 7.0.2-rc-2, I have two numbers, each in its own variable ('temp' and 'aa' below) that may differ at say the eleventh decimal place but are otherwise identical. This bit of code:

  set the numberformat to "0.######" -- to get 6 dec place precision just for the comparison
  put temp*1 into temp -- force a calculation to make a character string of the correct length
  put aa*1 into aa -- force a calculation to make a character string of the correct length
     if temp <> aa then
        answer error "No! aa must be" && aa  && "length=" & (number of chars of aa) & ", but it is actually" && temp && "length=" & (number of chars of temp)
        [...]

always results in an error even though their length as strings is the same and the actual strings are by inspection identical, i.e. the numbers are being seen as unequal even though their representation as strings is undoubtedly equal.

If I code

  if length (aa) <> length (temp) or (char 1 to length(aa) of temp) <> (char 1 to length(aa) of aa)

Then I get the expected result and the error message is not shown.

So it looks as if either I have made a massive mistake (always possible, to put it mildly) or the comparison is for the numeric values of the original quantities and not the string representations which I have tried to achieve. This goes against common sense - where are these more precise numbers being stored?

Sadly I can't (yet) reduce this to a simple demonstration to report it as a bug, but I shall continue to try.

Just wondered if anyone else had seen anything at all like this.

Still trying, but puzzled.

Graham



More information about the use-livecode mailing list