c# - 在 C# 中验证小数以在 SQL Server 中存储

标签 c# sql-server clr decimal

我有一个十进制数据库列 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/

相关文章:

SQL over 子句 - 将分区划分为编号的子分区

c# - sql server通知正在运行的程序

c# - 用于大型代码库的 C# 编译器是否会在具有巨大 RAM 的机器上运行得更快?

c# - 在 C# 中下载 HTML 页面

C# 命名空间/文件夹 : when is getting too organized/creating too many namespaces not right?

c# System.Security.Cryptography.X509Certificates.X509ContentType.Cert 这是 DER 吗?

c# - 如何通过在类中创建的方法在表单上创建按钮?

sql-server - 如何根据键对数据进行 UNION 而不重复?

java - JBoss Wildfly应用程序服务器无法连接到SQL Server

.net - DLL 可以调用 .NET DLL 吗?