查找小数是否大于四个位置

时间:2015-11-03 13:50:43

标签: c# string vb6 vb6-migration

我正在尝试在C#中验证表单,并且需要确定字符串中的小数位是否大于4位。

目前,VB过去的验证是:

Len(Mid(pAnnualFee, (InstrRev(pAnnualFee, ".") + 1), Len(pAnnualFee))) > 4 

如何以简洁的方式将其转换为c#,甚至是现在使用C#相当于InstrRev和mid的方式?

2 个答案:

答案 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
}