The precision in the database is limited to 20 digits before and 8 digits after the decimal point – I can imagine this limitation is accounted for when setting a param over native? If you can set the value with 8 digits, you could try rounding the number to 8 decimals, or setting the amount with a multiplication factor to rule out imprecisions.
How do these work out:
Probably they all work fine. I think the problem is too many decimal digits. 8 is the max.