繁体   English   中英

C#:小数点后的最小到最大位数

[英]C#: Min to max number of digits after a decimal

我正在尝试检查用户输入的汇率,如果小数点后的最小2位数到最大5位数,我想接受输入的值。

有效示例:

*1.12
*1.123
*1.1234
*1.12345

无效:

1
1.1
1.123456

等等

我一直在尝试用Regex来获取它,但是现在它只允许小数点后5位,仅此而已。 这是代码:

//Check if the string is a double 
bool IsDouble(string s)
{
    var regex = new Regex(@"^\d+\.\d{5}?$");
    var check = regex.IsMatch(s);
    return check;  
}

一点帮助将不胜感激。

应该这样做:

^\d+\.\d{2,5}$

使用图案

"^\d+\.\d{2,5}?$"

匹配2到5个字符

试试这个正则表达式

您可以在此处指定自己的范围d {2,5}

^\s*-?[1-9]\d*(\.\d{2,5})?\s*$

(要么)

^(\d{1,5}|\d{0,5}\.\d{2,5})$

正则演示

非正则表达式解决方案
它还返回小数

public int? DecimalAfter (string strDec, out decimal? decNull)
{
    int? decAfter = null;
    strDec = strDec.Trim();
    decimal dec;
    if (decimal.TryParse(strDec, out dec))
    {
        decNull = dec;
        int decPos = strDec.IndexOf('.');
        if (decPos == -1)
        {
            decAfter = 0;
        }
        else
        {
            decAfter = strDec.Length - decPos - 1;
        }
    }
    else decNull = null;

    return decAfter;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM