Function Returning Negative Value

Posted by Geowil on Stack Overflow See other posts from Stack Overflow or by Geowil
Published on 2013-06-30T03:42:32Z Indexed on 2013/06/30 4:21 UTC
Read the original article Hit count: 211

I still have not run it through enough tests however for some reason, using certain non-negative values, this function will sometimes pass back a negative value. I have done a lot of manual testing in calculator with different values but I have yet to have it display this same behavior.

I was wondering if someone would take a look at see if I am missing something.

float calcPop(int popRand1, int popRand2, int popRand3, float pERand, float pSRand)
{
    return ((((((23000 * popRand1) * popRand2) * pERand) * pSRand) * popRand3) / 8);
}

The variables are all contain randomly generated values:

popRand1: between 1 and 30

popRand2: between 10 and 30

popRand3: between 50 and 100

pSRand: between 1 and 1000

pERand: between 1.0f and 5500.0f which is then multiplied by 0.001f before being passed to the function above

Edit:

Alright so after following the execution a bit more closely it is not the fault of this function directly. It produces an infinitely positive float which then flips negative when I use this code later on:

pPMax = (int)pPStore;

pPStore is a float that holds popCalc's return.

So the question now is, how do I stop the formula from doing this? Testing even with very high values in Calculator has never displayed this behavior. Is there something in how the compiler processes the order of operations that is causing this or are my values simply just going too high?

If the later I could just increase the division to 16 I think.

© Stack Overflow or respective owner

Related posts about c++

Related posts about function