Add validation, rounding, and support for floats