【发布时间】:2011-05-23 02:21:40
【问题描述】:
我有一个无法更改的情况:一个数据库表(表 A)接受 6 个小数位,而另一个表(表 B)中的相关列只有 3 个小数位。
我需要从 A 复制到 B,但如果 A 的小数位超过 3 位,多余的数据将会丢失。我无法更改表定义,但我可以添加一个解决方法。所以我试图找出如何检查一个小数是否有超过 3 个小数位?
例如
Table A
Id, Qty, Unit(=6dp)
1, 1, 0.00025
2, 4000, 0.00025
Table B
Id, TotalQty(=3dp)
我希望能够找出表 A 中的 Qty * Unit 是否有超过 3 位小数(第 1 行会失败,第 2 行会通过):
if (CountDecimalPlaces(tableA.Qty * tableA.Unit) > 3)
{
return false;
}
tableB.TotalQty = tableA.Qty * tableA.Unit;
我将如何实现CountDecimalPlaces(decimal value) {} 函数?
【问题讨论】: