I may try that. My hackish solution was that if the resulting number was less than 0 but greater than -0.01 to just return zero. I'm dealing with money amounts here with no partial cents so I'm not really losing any significant data. Decimalformat takes care of this but I need to have the negative sign to the right of the number (client request) so I have to use numberFormat instead, Thanks.
On 12/28/07, Cameron Childress <[EMAIL PROTECTED]> wrote: > > I ran into this a number of times on a eCom system I was working on > recently. Gerry is right in that it's just a really small floating > point number. I've seen some financial systems deal with this problem > by shifting the decimal when dealing with numbers and shifting it back > only for display. In that case. > > For example 62355.57 would be stored as 6235557 or even as 623555700 > in financial systems that use 4 decimal points. You'd conduct all > math on these whole numbers and avoid floating point problems and then > just x/100 or x/10000 to get it back to a decimal format (maybe in a > UDF) for display. > > Another more hackish solution I've seen is to numberFormat() all > inputs to any math operation, which will strip off all the extra float > and give you a straighter answer. I'm not sure I would actually > suggest this cause it makes your code look like crap - but if you do > it the problem goes away. Try this out and see if your problem goes > away... > > <cfscript> > total = 0; > numberList = "62355.57,-62355.57,-333.01,261.09 ,17.98,35.96,17.98"; > for (i = 1;i lte listLen(numberList);i = i + 1) > { > writeOutput("#total# + #ListGetAt(numberList,i)# = "); > total = numberFormat(total,"999999999.99") + > numberFormat(ListGetAt(numberList,i),"999999999.99"); > writeOutput("#total#<br>"); > } > writeOutput('numberFormat(total,"999,999,999.99") = ' & > numberFormat(total,"999,999,999.99")); > </cfscript> > > -Cameron > > On Dec 28, 2007 11:20 AM, Howard Fore <[EMAIL PROTECTED]> wrote: > > Hey, > > > > Can someone confirm this seemingly odd behavior? If I execute the > following > > code: > > > > <cfscript> > > > > total = 0; > > numberList = "62355.57,-62355.57,-333.01,261.09 ,17.98,35.96,17.98"; > > for (i = 1;i lte listLen(numberList);i = i + 1) > > { > > writeOutput("#total# + #ListGetAt(numberList,i)# = "); > > total = total + ListGetAt(numberList,i); > > writeOutput("#total#<br>"); > > > > } > > writeOutput('numberFormat(total,"999,999,999.99") = ' & > > numberFormat(total,"999,999,999.99")); > > </cfscript> > > > > I get the following output: > > > > 0 + 62355.57 = 62355.57 > > 62355.57 + -62355.57 = 0 > > 0 + -333.01 = -333.01 > > -333.01 + 261.09 = -71.92 > > -71.92 + 17.98 = -53.94 > > -53.94 + 35.96 = -17.98 > > -17.98 + 17.98 = -1.06581410364E-014 > > numberFormat(total,"999,999, 999.99") = -0.00 > > > > I've tried using javacasts to make sure that there wasn't some odd > string to > > number conversion thing going on too and still got the same result. Any > > ideas? > > > > -- > > Howard Fore, [EMAIL PROTECTED] > > "Whether you believe you can do a thing or not, you are right." -- Henry > > Ford > > ------------------------------------------------------------- > > Annual Sponsor - Figleaf Software > > > > To unsubscribe from this list, manage your profile @ > > http://www.acfug.org?fa=login.edituserform > > > > For more info, see http://www.acfug.org/mailinglists > > Archive @ http://www.mail-archive.com/discussion%40acfug.org/ > > List hosted by FusionLink > > ------------------------------------------------------------- > > > > -- > Cameron Childress > Sumo Consulting Inc > http://www.sumoc.com > --- > cell: 678.637.5072 > aim: cameroncf > email: [EMAIL PROTECTED] > > > ------------------------------------------------------------- > Annual Sponsor FigLeaf Software - http://www.figleaf.com > > To unsubscribe from this list, manage your profile @ > http://www.acfug.org?fa=login.edituserform > > For more info, see http://www.acfug.org/mailinglists > Archive @ http://www.mail-archive.com/discussion%40acfug.org/ > List hosted by http://www.fusionlink.com > ------------------------------------------------------------- > > > > -- Howard Fore, [EMAIL PROTECTED] "Whether you believe you can do a thing or not, you are right." -- Henry Ford ------------------------------------------------------------- Annual Sponsor FigLeaf Software - http://www.figleaf.com To unsubscribe from this list, manage your profile @ http://www.acfug.org?fa=login.edituserform For more info, see http://www.acfug.org/mailinglists Archive @ http://www.mail-archive.com/discussion%40acfug.org/ List hosted by http://www.fusionlink.com -------------------------------------------------------------