Perhaps the addition of a character would make this specific problem "go away", and it 
may be a technique that I use elsewhere.

But the JavaScript technique was exceptionally effective, and I will leave it for now.



-----Original Message-----
From: Jesse Parker [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 18, 2003 6:25 PM
To: [EMAIL PROTECTED]
Subject: RE: Witango-Talk: When are these strings equal (Tango 2k)


Aha!  It is scientific notation.  Try these:

<@CALC " 1e1 "> = 1
<@CALC " 1e2 "> = 10
<@CALC " 1e6 "> = 1000000
<@CALC " 1e100 "> = 1e+100

<@CALC " 1e1000 "> = inf
<@CALC " 2e1000 "> = inf
<@CALC " 1e1000 = 2e1000 "> = 1 (your problem)

I don't know of any way to automatically turn off scientific notation, but
prepending some character to make an invalid scientific notation number
is an easy way to work around this.

<@CALC " a1e1000 = a2e1000 "> = 0

On Tue, 18 Mar 2003, Jesse Parker wrote:

> Anthony, I think this is about scientific notation (e.g. 2.31e03 = 2130.)
> It just starts to go nuts when the exponent is too big (e.g. > 1000.)  So,
> Tango is probably evaluating the two numbers in scientific notation,
> getting NaN or error for both, and concluding they are equal.
> 
> On Tue, 18 Mar 2003, Anthony M. Humphreys wrote:
> 
> > 
> > I was initially using the @IFEQUAL tag on these two strings, like so 
> > 
> > <@IFEQUAL '<@VAR aa>'  '<@VAR bb>'>
> > 
> > where aa = 39149E20021231 and
> > where bb = 39006E20021231
> > 
> > so that it would be expanded out to this:
> > 
> > <@IFEQUAL '39149E20021231' '39006E20021231'>
> > 
> > and these two strings were always comparing true. I then translated this
> > into an @CALC so that I could see if Tango really thought these two
> > strings equal.
> > 
> > So Kevin, are you telling me that any strings that have numbers and the
> > letter "E" in them will be substituted with "2.718281828459045"?
> > Or that the letter "G" in string will substituted with
> > "0.381966011250105", etc?
> > 
> > Wow, it DOES fail for G,E,L,P,Q,I,J,X also!
> > 
> > These all fail to behave "predicatably"!
> > <@CALC "39149G20021231"> <@CALC "39149E20021231"> 
> > <@CALC "39149L20021231"> <@CALC "39149P20021231">
> > <@CALC "39149Q20021231"> <@CALC "39149I20021231">
> > <@CALC "39149J20021231"> <@CALC "39149X20021231">
> > 
> > It's way too late to change the strings, and Tango does not have a text
> > specific equality test method, like it does for "contains", "beginswith"
> > and "endswith". So I guess I use always use JavaScript to do these
> > comparisons going forward. What a pain!
> > 
> > so now it's
> > 
> > <@IF <@SCRIPT EXPR="if (server.getVariable('local$aa') ==
> > server.getVariable('local$bb')) {'1'; } else {'0';};">>
> > 
> > which works predictably
> > 
> > 
> > 
> > 
> > -----Original Message-----
> > From: Kevin Quinn [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, March 18, 2003 3:39 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: Witango-Talk: When are these strings equal (Tango 2k)
> > 
> > 
> > 'E' is a defined CALC variable. Unless you're planning on using natural
> > logs, don't use E. Try a 'Z' or something.
> > 
> > -----Original Message-----
> > From: Anthony M. Humphreys [mailto:[EMAIL PROTECTED] 
> > Sent: Tuesday, March 18, 2003 3:34 PM
> > To: [EMAIL PROTECTED] Com (E-mail)
> > Subject: Witango-Talk: When are these strings equal (Tango 2k)
> > 
> > 
> > 
> > I was doing this comparison and it was True in Tango 2k!!
> > 
> > <@CALC "'39149E20021231'='39006E20021231'">
> > 
> > In this particular data set the last eight characters are always equal
> > anyways, so I was able to work around it by truncating the last eight
> > chars in the comparison like so: 
> > 
> > <@CALC EXPR="'<@LEFT STR="39149E20021231" NUMCHARS="<@CALC
> > 'len(39149E20021231) - 8'>">'='<@LEFT STR="39006E20021231"
> > NUMCHARS="<@CALC 'len(39006E20021231) - 8'>">'">
> > 
> > But still, these two strings are NOT equal by any stretch of the
> > imagination. Any one care to guess what Tango has done to compare these
> > two strings equal? 
> > 
> > I'd hate to run into this one again!
> > 
> > 
> > ________________________________________________________________________
> > TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
> >                 with unsubscribe witango-talk in the message body
> > 
> > 
> > ________________________________________________________________________
> > TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
> >                 with unsubscribe witango-talk in the message body
> > 
> > ________________________________________________________________________
> > TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
> >                 with unsubscribe witango-talk in the message body
> 
> ________________________________________________________________________
> TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
>                 with unsubscribe witango-talk in the message body
> 

________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

Reply via email to