Ask a Question

Testing inequality

leonk
New Contributor

Testing inequality



I have the following code to test if a reading is within +/-25% of the expected value.



function testWithinLimits()

{

   var expectedVal = 200;

   var ErrorInPercent = 25;

   var UpperLimit = expectedVal/1000 * ((100 + ErrorInPercent)/100);

   var LowerLimit = expectedVal/1000 * ((100 - ErrorInPercent)/100);



   var readVal = "0.15";

   var reading = StrToFloat(readVal);

   bResult1 = (reading <= UpperLimit);

   bResult2 = (reading >= LowerLimit);



   strMsg = FloatToStr(reading) + " <= " + FloatToStr(UpperLimit) + " is : " + bResult1;

   strMsg += "\r\n";

   strMsg += FloatToStr(reading) + " >= " + FloatToStr(LowerLimit) + " is : " + bResult2;  

   

   ShowMessage(strMsg);



}



The expected value is 0.2 so a range from 0.15 to 0.25 (inclusive) is allowed. My reading is 0.15 but the function shows a false result.



Have I missed a type conversion or made a serious error?



I'm using TestComplete v6.52.419.7.



Thanks, Leon.
2 REPLIES 2
leonk
New Contributor

RE: Testing inequality



Stripping some of the extra code away gives me this...



function theSame()

{



   var expectedVal = 200;

   var ErrorInPercent = 25;

   var x = expectedVal/1000 *  (100-ErrorInPercent) / 100;

   var y = expectedVal/1000 * ((100-ErrorInPercent)/100);



   ShowMessage((x == y)?"True":"False");   



}



I am getting a False result though believe x and y should be equal if I have my operator precedence correct.
YMinaev
Staff

RE: Testing inequality

Hi Leon,



The same behavior is observed in external JScript scripts (launched from JS files), so it is not related to TC. This can be a problem in the MS JScript engine or just a floating-point computation inaccuracy.

------
Yuri
TestComplete Customer Care Engineer

cancel
Showing results for 
Search instead for 
Did you mean: