簡體   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