Chr*_*ham 6 c# sql-server .net-3.5
我正在编写一个例程,在将数据插入数据库之前对其进行验证,其中一个步骤是查看数值是否符合数字(x,y)SQL-Server类型的精度和比例.
我已经从SQL-Server获得了精度和规模,但是在C#中获得CLR值的精度和规模的最有效方法是什么,或者至少测试它是否适合给定的约束?
目前,我正在将CLR值转换为字符串,然后使用.IndexOf()查找小数点的位置.有更快的方法吗?
System.Data.SqlTypes.SqlDecimal.ConvertToPrecScale( new SqlDecimal (1234.56789), 8, 2)
Run Code Online (Sandbox Code Playgroud)
给出1234.67.它将截断小数位后的额外数字,并将抛出错误而不是尝试截断小数位前的数字(即ConvertToPrecScale(12344234,5,2)
在不触发异常的情况下,您可以使用以下方法来确定该值是否符合精度和比例约束。
private static bool IsValid(decimal value, byte precision, byte scale)
{
var sqlDecimal = new SqlDecimal(value);
var actualDigitsToLeftOfDecimal = sqlDecimal.Precision - sqlDecimal.Scale;
var allowedDigitsToLeftOfDecimal = precision - scale;
return
actualDigitsToLeftOfDecimal <= allowedDigitsToLeftOfDecimal &&
sqlDecimal.Scale <= scale;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4178 次 |
| 最近记录: |