Re: Strange issue when converting from hex to float
Re: Strange issue when converting from hex to float
- Subject: Re: Strange issue when converting from hex to float
- From: Sherm Pendley <email@hidden>
- Date: Thu, 21 Jul 2005 13:15:30 -0400
On Jul 21, 2005, at 12:54 PM, Ian was here wrote:
long alphaComp = strtol( alphaValue, NULL, 16 );
long redComp = strtol( redValue, NULL, 16 );
long greenComp = strtol( greenValue, NULL, 16 );
long blueComp = strtol( blueValue, NULL, 16 );
The following code segment always returns zero!!??
// Convert each decimal number to float.
float fAlpha = alphaComp / 255L;
float fRed = alphaComp / 255L;
float fGreen = alphaComp / 255L;
float fBlue = alphaComp / 255L;
Operator precedence. The assignment operator has a *very* low
precedence, so alphaComp/255L is evaluated first - which performs
integer division, so the result will always be either 0 (0x00 to
0xfe) or 1 (0xff). Only after the right hand side of the = is
completely evaluated is the final result is converted to a float
value so it can be assigned.
You can force the division to use floating point by using a floating
point value in the / operator - a convenient place to do that is the
constant:
float fAlpha = alphaComp / 255.0;
sherm--
Cocoa programming in Perl: http://camelbones.sourceforge.net
Hire me! My resume: http://www.dot-app.org
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden