I think this discussion is missing an important point, which is the difference between how a value is stored (i.e., what ends up as suggested_retail_price in your table), and how it is formatted when you select or use it. Whatever value you select in this update is going to get converted to the column's datatype anyway. You haven't told us what the datatype for s_r_p is, but consider this example:
CREATE TEMP TABLE price (
my_dec_2 DECIMAL(8,2),
my_numeric NUMERIC,
my_numeric_2 NUMERIC (8,2),
my_money MONEY
);
WITH num as (SELECT 4.2375914 AS base)
INSERT INTO price
SELECT base,base,base,base FROM num;
SELECT * FROM price;
my_dec_2 | my_numeric | my_numeric_2 | my_money
----------+------------+--------------+---------- 4.24 | 4.2375914 | 4.24 | $4.24
So if you want your prices to be limited to 2 decimal places, just define the columns as such. All the formatting mentioned in this thread is only needed for outputting, selecting on the fly, etc.
Cheers,
Ken