Fix type casting to Decimal from Float with large precision

When I define large precision column at RDBMS,
I assign float value, raises ArgumentError (precision too large).

Cause of this probrem:
- `precision` is derived from database column definition.
- If `precision` is larger than `Float::DIG + 1`, `BigDecimal.new` raises ArgumentError

I think it is inconvenient.

this commit fixes it.
I'd still like to see the `[precision.to_i, ::Float::DIG + 1].min` pulled out to a private method, and possibly using an `if` statement instead of `min`.