I think that the problem my be in how you are using the NUMBER data type. If you are using oracle then you should use something like this: NUMBER(p) or INTEGER or LONG (BLOB). Here it is the description of NUMBER. As you can see if it's used like in your function then it will basically expect a list of floats.
The NUMBER datatype
Stores zero, positive, and negative numbers, fixed or floating-point numbers
precision p = length of the number in digits
scale s = places after the decimal point, or (for negative scale values) significant places before the decimal point.
This is a fixed-point number with precision p and scale 0. Equivalent to NUMBER(p,0)
floating-point number with decimal precision 38