检查变量是否为数据类型double

时间:2012-03-22 14:03:11

标签: c# casting double

我需要检查我所拥有的变量是否属于数据类型double。这就是我试过的:

try
{
    double price = Convert.ToDouble(txtPrice.Text);
}
catch (FormatException)
{
    MessageBox.Show("Product price is not a valid price", "Product price error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return false;
}

我认为这会有效,但很明显,我没有意识到txtPrice.Text除了数字之外还有其他数字,Convert类只会将其解析出来。

如何才能真实地检查变量是否为双精度?

10 个答案:

答案 0 :(得分:28)

使用此:

double price;
bool isDouble = Double.TryParse(txtPrice.Text, out price);
if(isDouble) {
  // double here
}

答案 1 :(得分:10)

  

如何才能真实地检查变量是否为双精度?

你需要更清楚你想要在这里做什么。我不认为你在问你认为你在问什么,而且值得了解术语的差异。

如果你有一个声明的变量属于double类型,那么它肯定是double。如果您有一个声明为objectValueType类型或其支持的接口之一的变量,那么您可以使用

if (value is double)

但听起来你真正想知道的是字符串值是否可解析作为double。为此,您应该使用double.TryParse - 但 还需要考虑您感兴趣的文化。例如,您会将“15,5”视为有效的{{ 1}?欧洲用户可能,但美国用户可能不会。你想允许数千个分隔符吗?

我强烈建议您使用需要double的重载并使用适当的文化。即使您感兴趣的文化 是默认的,也值得明确。

你可能想要:

IFormatProvider

然后使用double result; // For suitable values of text, style and culture... bool valid = double.TryParse(text, style, culture, out result); 变量来确定它是否实际被正确解析。如果valid为真,那么valid的值就是解析后的值。如果result为false,则valid将为0.

答案 2 :(得分:4)

使用Double.TryParse method

double price;
if (Double.TryParse(txtPrice.Text, out price))
{
    Console.WriteLine(price);
}
else
{
    Console.WriteLine("Not a double!");
}

答案 3 :(得分:2)

为什么不尝试这样的事情 -

  double doubleVar;
    if( typeof(doubleVar) == double ) {
        printf("doubleVar is of type double!");
    }

这可以很容易地检查变量是否为double类型。

答案 4 :(得分:2)

如果在调用方法生成数字时不确定返回了什么,也可以使用.GetType()返回变量的类型。有关示例,请参阅http://msdn.microsoft.com/en-us/library/58918ffs(v=vs.71).aspx

答案 5 :(得分:1)

您可以使用

  • double.ParseExact
  • 使用Regex检查它是否有效。

答案 6 :(得分:1)

Double.TryParse就是你想要的。

答案 7 :(得分:1)

所以,如果我的问题是对的,你的意思是你只想让数字正确吗? 如果这是真的,那么也许这会对你有帮助。

string Str = textBox1.Text.Trim();
double Num;
bool isNum = double.TryParse(Str, out Num);
if (isNum)
MessageBox.Show(Num.ToString());
else
MessageBox.Show("Invalid number");

答案 8 :(得分:1)

您可以使用double.TryParse()如果无法创建双倍,则会返回false

答案 9 :(得分:1)

你不能只使用:

double.Parse(txtPrice.Text);

这样你就会得到一个FormatException,说“输入字符串格式不正确”。如果字符串值不是double,那么看起来大概是你手动做的。