olson@endor.harvard.edu (Eric K. Olson) (05/12/89)
In my first attempt to do useful stuff with Hypercard, I have encountered a very serious problem. I'm hoping someone will just tell me I'm doing something wrong: Hypercard 1.2.2 seems to have a problem with numeric = and <> operators. The following script: on MouseUp set numberformat to "0.000000000000000000000000000000" put empty into cd fld 1 repeat with x=1 to 30 put 1/(10^x) into boo put boo && (boo = 0) && (boo <> 0) into line x of cd fld 1 end repeat end MouseUp attached to a button, and with a card field available for it to put its output, yields some very strange results (note that this must be run as a script, because Hypercard resets numberformat on idle): 0.1 through 0.0000000001 yield the expected results: false for =0, and true for <>0. BUT: 0.00000000001 yields false for both =0 and <>0 (an impossibility), and numbers smaller than that yield true for =0 and false for <>0! BUT: all these numbers will yield true for >0 !!! [Please note that I've expressed 0.00099999.... as 0.001 in these examples. I don't think that that (binary/decimal conversion error) is the root of this problem. Try the script if you can't believe this!] Hypercard clearly knows that these numbers are not zero. They can be calculated with, and they do return true for >0. The only workaround I can imagine is to use ((x<0) or (x>0)) for x<>0 and (not ((x<0) or (x>0))) for x=0. Is this fixed in a later release of Hypercard? Am I doing something wrong? My apologies if this has been discussed before. Other things that suprised me (but I'm not so worried about): 1. Hypercard doesn't understand unary +, i.e., +323.33. 2. Hypercard doesn't understand scientific notation, i.e., 3.233E+22. 3. I can't trap errors like an undefined variable in "value of". I got around this one by writing an XFCN that just calls back Hypercard to evaluate the argument (this allows me to trap the error without displaying a dialog). Thanks in advance for your help! -Eric Lexington Software Design: Tomorrow's Software Yesterday Eric K. Olson olson@endor.harvard.edu harvard!endor!olson (Name) (Arpanet) (Usenet)