It is possible that you have some rows where itemPrice*itemQ is zero, but those rows are excluded by (for example) a WHERE clause. If the WHERE clause is done first and the calculation, everything is fine. But if the calculation is done first and then the WHERE clause, you get the Divide by zero error even though there is no row that would be returned by the query (because the WHERE clause excludes it). This is because SQL Server is allowed to process the query in any manner it believes best and so it is best to write your queries so that they cannot ever get a divide by zero error. The easiest way to do this is with the NULLIF function. So try
1.0/ (1-(100-ROUND(100*(itemPrice*itemQ-RPrice)/NULLIF((itemPrice*itemQ), 0), 2))/100)
Tom