There are the two official documents for the migration to AX 2009.
A while ago I noticed that in a X++ select statement, a wrong result is received when you do a comparison with Real values in the where clause.
select table where (real1 + real2 == 3)
The above example selects the wrong record(s)!
I used 1.00 and 2.00 == 3.00, so it’s not a rounding issue.
Surprisingly, this result is OK when you work with Integer values:
select table where (int1 + int2 == 3)
We forwarded this problem to Microsoft, because we encountered the above example with Real values in standard AX.
Going through all the records and filter out with an IF clause is not always an options due to performance reasons.
Microsoft replied today to this issue, and they suggest to use the keyword forceliterals as workaround.
select forceliterals table where (real1 + real2 == 3)