我有一个十进制数据库列 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# decimal 数据类型的最大精度似乎是 29 位,而 SQL decimal 可以有 38 位。因此,您可能不会在 C# 中达到 SQL decimal 的最大值。
关于c# - 在 C# 中验证小数以在 SQL Server 中存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4368543/