查找小数是否大于四位

Find if a decimal is larger than four places

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

目前,VB 中的过去验证是:

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

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

你可以这样试试:

decimal d = decimal.Parse(pReturn);
if (Decimal.Round(d, 4) != d)

我可能会使用@fix_likes_coding 的答案中的解决方案。

然而,虽然 Decimal 结构没有获取小数位数的方法,但您可以调用 Decimal.GetBits 来提取二进制表示,然后使用整数值和小数位数来计算小数位数小数。

这可能比格式化为字符串更快,尽管您必须处理大量小数才能注意到差异。

尝试这样的事情(例如):

decimal argument = 123.456m;
int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];

然后只是:

if(count>4)
{
//your code
}