提问人:vinay gupta 提问时间:12/10/2021 最后编辑:marc_svinay gupta 更新时间:12/10/2021 访问量:326
发送列“除数”中的所有值所需的精度“41”超过支持的最大精度“38”
Precision '41' required to send all values in column 'Divisor' exceeds the maximum supported precision '38'
问:
我有一个简单的 C# 代码来使用 和 运行存储过程。该过程的输入参数之一是用户定义的数据类型。其中一列是十进制类型。SqlCommand
SqlConnection
在 C# 代码中,我使用 datatable 发送此参数的值。datatable 的列类型类似于 udtt,包括 decimal 列。
当我运行代码时,出现以下错误:
发送列“除数”中的所有值所需的精度“41”超过了支持的最大精度“38”。这些值必须都适合单个精度
我的第一反应是检查数据表中是否有任何十进制值的精度大于 38。令我惊讶的是,十进制列的最大精度值为 32。
我试图在较小的集合中分解数据表行,以找出导致问题的确切值。当我使用 50 行的集合来执行该过程时,我得到了同样的错误。但是,当我尝试收集 10 行时,所有 10 行收集的过程执行都成功。
我可以用它来避免错误。但这会导致我们的数据出现问题。decimal.Round()
有谁知道为什么 .NET Framework 在我的数据中的最大精度为 32 时会引发精度错误?
答: 暂无答案
评论