我正在尝试在C#中验证表单,并且需要确定字符串中的小数位是否大于4位。
目前,VB过去的验证是:
Len(Mid(pAnnualFee, (InstrRev(pAnnualFee, ".") + 1), Len(pAnnualFee))) > 4
如何以简洁的方式将其转换为c#,甚至是现在使用C#相当于InstrRev和mid的方式?
答案 0 :(得分:4)
您可以尝试这样:
decimal d = decimal.Parse(pReturn);
if (Decimal.Round(d, 4) != d)
答案 1 :(得分:0)
我可能会在@ fix_likes_coding的答案中使用该解决方案。
但是,虽然Decimal结构没有获取小数位数的方法,但可以调用Decimal.GetBits来提取二进制表示,然后使用整数值和scale来计算小数位数。
这可能比格式化字符串更快,尽管你必须处理大量的小数以注意差异。
尝试这样的事情(例如):
decimal argument = 123.456m;
int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];
然后只是:
if(count>4)
{
//your code
}