>>> print 1/3
>>> print 1.0/3
>>> print float(1)/3
When I try your Raster Calculator expression with integer inputs and a variable equal to 0.5 I am getting a floating point raster as a result, which is what I expect.
I am wondering what variable type are you using for 'L'? If you use type Double your equation should return a floating point raster. To verify what 'L' equals look at the message being returned when you execute the Raster Calculator. The message has the value of 'L' substituted into the equation, make sure that this value is in fact 0.5.
Example of the message being returned:
Start Time: Tue Aug 23 13:36:44 2011
(1 + 0.5) * (Raster(r"layer_4") - Raster(r"1st step.img")) / (Raster(r"layer_4") + Raster(r"1st step.img") + 0.5)
Succeeded at Tue Aug 23 13:36:45 2011 (Elapsed Time: 1.00 seconds)
Please see the attached image of the expression I executed and my inputs.
I hope this helps.