I have defined a column in SQL to be decimal(4,1), null which means I am storing four digits, up to one of which can be to the right of the decimal point.
The source data should always be in the range of 0 to 999.9, but due to an error beyond my control, I received the number -38591844.0. Obviously this won’t store in SQL and gives the error “Arithmetic overflow error converting real to data type numeric.”
I want to store null if the value is out of bounds.
What is the best way to verify that the value, a float in C#, is not out of bounds for a SQL column defined as above?
While this seems like the simplest approach…
private bool Validate41Float(float f)
{
if (f >= 0 && f <= 999.9) return true;
else return false;
}
I’m concerned if for some reason I get the value: 10.12345. In such a case, I would just want to store 10.1, but does the extra precision cause the same SQL error?
I know you can submit 10.12345 to SQL Server and it will just round to 10.1 and not complain. I don’t know about other DB vendors for sure, but I would assume that they work the same.
You can have negative values, as well. To be clear what you’re doing, you might want to explicitly round and then test your logic like this: