|
XonDK Apprentice
Joined: 01 Dec 2006 Posts: 178
|
Posted: Fri Oct 01, 2010 3:43 pm
[3.29b] Floating Point calculations randomly failing |
I'm experiencing a weird bug in floating point calculations, I'm using it to calculate critical and give me some information on the % of occurance, however seemingly randomly, after working fine for quite a while, they just stop working and every calculation gives 0.00
|
|
|
|
ReedN Wizard
Joined: 04 Jan 2006 Posts: 1279 Location: Portland, Oregon
|
Posted: Fri Oct 01, 2010 4:01 pm |
A good start would be to show the code you are using and an explanation of what values the inputs could assume. Not having any idea what your code looks like I'd suggest making sure all the parts of the equation are being recognized as a floating point value by forcing it with %float to recognize it as a floating point number.
|
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Fri Oct 01, 2010 4:49 pm |
As ReedN mentioned, we can't do much without more details. But it sounds to me like one of your variables is getting converted to a string value somewhere along the line. And when CMUD evaluates a string variable in a numeric expression, it returns zero.
|
|
|
|
XonDK Apprentice
Joined: 01 Dec 2006 Posts: 178
|
Posted: Fri Oct 01, 2010 10:08 pm |
XML export of one of the alias' that fail
<?xml version="1.0" encoding="ISO-8859-1" ?>
<cmud>
<alias name="crits">
<value><![CDATA[#IF (%1=%null) {
#SAY %cr%ansi(15)+%repeat("-",60)+
#SAY %ansi(15)|%repeat(%char(32),8)Total mauls: %format("&7d",@totalmauls)%repeat(%char(32),32)|
#SAY %ansi(15)|%repeat(%char(32),7)Normal Crits: %format("&7d",@normcrit) - %format("&6f",%eval((%float(@normcrit)/(@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100))~% of all Crits.%repeat(%char(32),8)|
#SAY %ansi(15)|%repeat(%char(32),3)Staggering Crits: %format("&7d",@stagcrit) - %format("&6f",%eval((%float(@stagcrit)/(@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100))~% of all Crits.%repeat(%char(32),8)|
#SAY %ansi(15)|%repeat(%char(32),5)Crushing Crits: %format("&7d",@cruscrit) - %format("&6f",%eval((%float(@cruscrit)/(@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100))~% of all Crits.%repeat(%char(32),8)|
#SAY %ansi(15)|%repeat(%char(32),3)Mutilating Crits: %format("&7d",@muticrit) - %format("&6f",%eval((%float(@muticrit)/(@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100))~% of all Crits.%repeat(%char(32),8)|
#SAY %ansi(15)|%repeat(%char(32),1)Annihilating Crits. %format("&7d",@annicrit) - %format("&6f",%eval((%float(@annicrit)/(@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100))~% of all Crits.%repeat(%char(32),8)|
#SAY %ansi(15)|%repeat(%char(32),10)Crit rate: %format("&6f",%eval((%float(@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit)/(@totalmauls))*100))~%%repeat(%char(32),32)|
#SAY %ansi(15)+%repeat("-",60)+} {#IF (%begins("reset",%1)) {#SAY %ansi(15)Critical status reset.;totalmauls=0;normcrit=0;stagcrit=0;cruscrit=0;muticrit=0;annicrit=0}}]]></value>
</alias>
</cmud>
----
and this is a very old alias, that's worked fine and works fine most of the time. Heck I think its from zmud actually |
|
|
|
GeneralStonewall Magician
Joined: 02 Feb 2004 Posts: 364 Location: USA
|
Posted: Fri Oct 01, 2010 10:51 pm |
Try to get it to fail and then export the whole thing, including variables? Not sure that alias alone will help. Maybe just some variables to test it with.
|
|
|
|
ReedN Wizard
Joined: 04 Jan 2006 Posts: 1279 Location: Portland, Oregon
|
Posted: Fri Oct 01, 2010 11:27 pm |
Make this: (@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100)
this: %float((@normcrit+@stagcrit+@cruscrit+@muticrit+@annicrit))*100))
Like I said in my first comment. Both need to by of type float. |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Sat Oct 02, 2010 2:22 am |
Just changing the 100 to 100.0 will help make it floating point too. But if it's returning zeros, I still think somewhere else the variables are getting set to string values somehow. GeneralStonewall is correct that we really need to see all of the XML showing the variable values too.
|
|
|
|
XonDK Apprentice
Joined: 01 Dec 2006 Posts: 178
|
Posted: Sat Oct 02, 2010 5:27 pm |
just enter crits reset or anything else after crits to reset them all to 0 then just add a number to total mauls and normcrits, when floating points begin to fail it fails even when its 1 totalmauls and 1 normcrits, 'why' floating points begin to fail I have no idea, it seems to happen randomly, while my system is running in normal things that 'normally' don't have any problems running
|
|
|
|
ReedN Wizard
Joined: 04 Jan 2006 Posts: 1279 Location: Portland, Oregon
|
Posted: Sun Oct 03, 2010 4:00 pm |
I've notice that some of my saved variables are being interpreted as strings instead of floating point values. I'm having to put %float around these to force them to a float type variable for my scripts to work.
It seems this is something that occurred during one of the 3.x beta versions. |
|
|
|
|
|