发送“除数”列中的所有值所需的精度“41”超过了支持的最大精度“38”

问题描述 投票:0回答:1

我有一个简单的 C# 代码来使用

SqlCommand
SqlConnection
运行存储过程。该过程的输入参数之一是用户定义的数据类型。其中一列是十进制类型。

在 C# 代码中,我使用数据表发送此参数的值。数据表的列类型与udtt类似,包括小数列。

当我运行代码时,出现此错误:

发送“除数”列中的所有值所需的精度“41”超出了支持的最大精度“38”。这些值必须全部符合单一精度

我的第一反应是检查数据表中是否有任何小数值的精度超过 38。令我惊讶的是,小数列的最大精度值为 32。

我尝试将数据表行分解为较小的集合,以找出导致问题的确切值。当我使用 50 行的集合来执行该过程时,我得到了同样的错误。但是,当我尝试收集 10 行时,所有 10 行收集的过程执行都成功。

我可以使用

decimal.Round()
来避免错误。但这会导致我们的数据出现问题。

有谁知道为什么当我的数据中的最大精度为 32 时 .NET Framework 会抛出精度错误?

c# sql-server datatable precision user-defined-types
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.