RCM3400 "if" tests false with equal floats

This simple “if” statement tests false when the debug watch window shows the parameters as equal. I’ve tried a lot of different ways of coding it including casting everything to (float). I’m using the 9.62 compiler. Does anyone have any ideas?

void convertWaveThermTemp(char direction, float * degreesCelsius, int * degreesCoded)
{
int i;
float degreesTemp;
float degreesHold;
unsigned short int pos[12];

degreesTemp = 0.0;
degreesHold = 0.0;

for (i = 0; i < 12; i++)
	pos[i] = 0;

switch (direction)
	{
    case 'c':
        for (i = 7; i >= -4; i--)
			{
            degreesTemp = pow((float)2, (float)i);
        	if (degreesTemp <= (float)2.0)
            	{
                degreesHold += pow((float)2, (float)i);
                pos[i+4] = 1;
                }
            }
    	break;
    case 't':
    	break;
    default:
    	break;
    }

}