It seems impossible to pass it to DOUBLE , which brings problems if you perform calculations and, for example, want ROUND() a DECIMAL 12,2 in the third digit. Using ROUND(foo * bar,2) will simply ignore extra digits if your foo and bar are DECIMAL 12.2 fields.
Having said that, you can do something like this to still work:
ROUND(CAST(foo AS DECIMAL(30,15)*CAST(bar AS DECIMAL(30,15)),2)
source share