如何判断用户是输入整数还是Double或Decimal

时间:2014-09-23 06:43:41

标签: c#

我需要找出用户输入文本框的值。

用户可以在文本框中输入整数,双精度或十进制数。

我应该使用哪一个来验证价值?

Double.Parse(txtboxNo.text) 
int.Parse(txtboxNo.text);
Decimal.Parse(txtboxNo.text)

我尝试了这个(如果用户输入1或1.8,此功能仍然有效):

public bool IsNumeric(string strNbr)
{
    Double d_Nbr;

    try
    {
        d_Nbr = Double.Parse(strNbr);
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}

我的问题: 我正在开发一个移动销售应用程序。销售人员有权更改价格。推销员想要快速工作。所以,我需要检测他是否输入了正确的价格(我的价格是十进制),如果他输入了以下内容:例如:1或1.0或23或333.0或按下乐趣123456。我怎么处理?

3 个答案:

答案 0 :(得分:1)

我不确定目的但您可以尝试使用Double / Int / Decimal的TryParse()方法来验证字符串Value。

if (Double.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("{0} is outside the range of a Double.",

MSDN文章: http://msdn.microsoft.com/en-us/library/994c0zb1%28v=vs.110%29.aspx

答案 1 :(得分:1)

int和double / decimal之间的区别不是很大的问题,如果它有一个小数点,你只需要测试它。只有当你尝试在double和decimal之间进行区分时,问题才会开始,因为两者都有小数点,唯一的区别是精度,如下所示: Difference between decimal, float and double in .NET?

我可以看到的一种可能性是你试图寻找一个小数点,然后看看它是否有足够的数字可以看作是小数而不是浮点数。 String textBoxValue = txtboxNo.Text.Replace(',','。');

if (textBoxValue.IndexOf(".") >= 0) 
{
    // double or decimal
    if (textBoxValue.length >= 17)
    {
        // Possible decimal as too long for double
        Decimal mydec;
        if (Decimal.TryParse(textBoxValue , out mydec))
        {
           // Is decimal
        }
       else
       {
           // Is something else
       }
    } 
    else
    {
       double mydoub;
       if (Double.TryParse(textBoxValue, out mydoub))
       {
           // Is double
       }
       else
       {
           // Is something else
       }
    }
}
else
{
    int myInt;
    // possible int 
    if (int.TryParse(textBoxValue, out myInt))
    { 
        // its an int
    }
    else
    {
        // something else
    }
}

答案 2 :(得分:-1)

您可以使用*

double output;
if(double.tryParse(txtboxNo.Text,output))
{
 // it's double
}
else{// not double }