This is only a couple of years late, but I was running into the same problem and figured out an answer. Maybe someone else working with ad_form and currency will benefit from this answer.
In the database I created the following field:
price numeric(12,2)
In the -form part of ad_form I used the following:
{price:currency,optional,to_sql(sql_number)
{label "Price"}
{value {$price}}}
This should be fine to insert or update the price into the DB without conversion:
update db
set price = :price
where something = :this
When selecting the value to be displayed in the form you have to do some to_char trickery:
select
to_char(price, 'L 999999999999 . 99') as price
from db
where something = :this
Hope this saves someone some time. It would have saved me a couple of hours.