我有一个十进制数据库列decimal (26,6)
.
据我所知,这意味着精度为 26,小数位数为 6。
我认为这意味着该数字的长度总共可以是 26 位数字,其中小数点后可以有 6 位数字。
在我的 WPF / C# 前端中,我需要验证传入的小数,以便我可以确保它可以存储在 SQL Server 中而无需截断等。
所以我的问题是有没有一种方法可以检查小数是否具有特定的精度和小数位数。
另外,我听说 SQL Server 以与 CLR 完全不同的方式存储十进制,这是真的吗?如果是的话,我需要担心吗?
确定给定精度、小数位数是否大于 26,6 的直接方法是检查其等效字符串的长度。
public static bool WillItTruncate(double dNumber, int precision, int scale) {
string[] dString = dNumber.ToString("#.#", CultureInfo.InvariantCulture).Split('.');
return (dString[0].Length > (precision - scale) || dString.Length>1?dString[1].Length > scale:true);
}
C# 十进制数据类型的最大精度似乎是 29 位,而 SQL 十进制可以有 38 位。因此,您可能无法达到 C# 中 SQL 小数的最大值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)