我需要找出用户输入文本框的值。
用户可以在文本框中输入整数,双精度或十进制数。
我应该使用哪一个来验证价值?
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。我怎么处理?
答案 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 }