How to force the update of a property in python?
When using python to alter the current frame you should use scene.frame_set(f) which will update the scene so you can see animated values as they are at that frame.

A possible logic error in your code - you mention the value is animated between 0 and 1, if frame 1 is keyed to 0.0 then frame 1 will always return as being less than the tested value. You may want to consider a range that is acceptable to matching the value.

if val &gt; (target - 0.1) and val &lt; (target + 0.1):
    return frame


You should also find fcurve.evaluate(f) to be an easier and possibly faster solution as you don't need to update the scene to get the curve value.

def getFrameFromPercentagePosition(context, pCurveObject, pPercentagePosition):
    scn = context.scene
    fcurve = pCurveObject.data.animation_data.action.fcurves.find('bevel_factor_end')
    variance = 0.05
    for f in range(scn.frame_start, scn.frame_end):
        val = fcurve.evaluate(f)
        if val &gt; (pPercentagePosition - variance) and val &lt; (pPercentagePosition + variance):
            return f