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.
This proc feels wrong to me. I think I'd prefer this to be an if statement inside of the `else` case.