我花了半个小时试图得到这个,也许有人可以快速拿出来.
我需要一个匹配一个或两个数字的正则表达式,后跟一个可选的decmial点,后跟一个或两个数字.
例如,它应该完整匹配这些字符串:
3
33
.3
.33
33.3
33.33
并且不匹配在decmial点之前或之后超过2位数的任何内容.
我有一种情况我无法改变:一个数据库表(表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)
Run Code Online (Sandbox Code Playgroud)
我希望能够找出表A中的Qty*Unit是否超过3位小数(第1行会失败,第2行会通过):
if (CountDecimalPlaces(tableA.Qty * tableA.Unit) > 3)
{
return false;
}
tableB.TotalQty = tableA.Qty * tableA.Unit;
Run Code Online (Sandbox Code Playgroud)
我该如何实现这个CountDecimalPlaces(decimal value) {}功能?