If possible, try running all math calculations outside of the EVALUATION string, and outside of any EVALUATION process.
In your example
decimal {4} ld_val1, ld_val2, ld_result
string ls_eval, ls_evalresult
ld_val1 = 3.5 // Loaded from a CASE statement or by parameter
ld_val2 = 3.5
ld_result = ld_val1 * ld_val2
ls_evalresult = String (ld_result) // Can specify decimal spaces if you wish
// test with expression
ls_ret = dw_1.modify('create compute(band=foreground alignment="0" expression="'+ls_eval+&
'" border="0" color="0" x="394" y="400" height="1" width="1" format="[general]" '+&
'name=ls_evalresult font.face="Arial" font.height="-6" font.weight="400" '+&
'font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16777215" )')
Olan