【发布时间】:2024-01-09 02:47:01
【问题描述】:
我正在尝试验证 c# 中的小数是否适合 db 列小数。 SqlDecimal 对象允许您将精度和小数位数以及小数位传递给构造函数。我知道列的大小,所以在我们写入数据之前,我会检查每个输入,以便生成业务所需的输出。
在本例中,我们存储的是百分比,因此精度为 13,比例为 10。我有一个测试工具,我在下面将其压缩为 SO 的 unti 测试。此示例在 SqlDecimal 构造函数行上引发算术溢出错误:
[TestMethod]
public void TestDecimalFits()
{
decimal d = 10.3m;
SqlDecimal sqlDecimal = new SqlDecimal(13, 10, d >= 0, Decimal.GetBits(d));
Assert.AreEqual(d, sqlDecimal.Value);
}
有人知道为什么会这样吗?
谢谢!
【问题讨论】:
-
可以直接使用带十进制类型的
SqlDecimal构造函数。喜欢这个SqlDecimal sqlDecimal = new SqlDecimal(d);。 -
我可以,但是它不能验证我在下面的评论中提到的尾随零问题。这会引发错误并且会起作用:SqlDecimal.ConvertToPrecScale(new SqlDecimal(value), precision, scale);
标签: c# sql-server type-conversion decimal