Para tu segundo problema, en lugar de utilizar CInt(), utiliza CSng() que sí te coge los decimales (Cint te convierte un valor a entero y CSng a single o float).
Y para el primer problema prueba a hacer lo mismo en la comparación.
If CSng(request.Form("v_precio")) > 0 then