检查变量的数据类型是否为double
本文关键字:double 是否 数据类型 变量 检查 | 更新日期: 2023-09-27 18:28:35
我需要检查我拥有的变量是否为数据类型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
类就会解析它。
如何真正检查变量是否为双精度?
使用此:
double price;
bool isDouble = Double.TryParse(txtPrice.Text, out price);
if(isDouble) {
// double here
}
如何真正检查变量是否为双精度?
你需要更清楚地了解你在这里真正想做什么。我不认为你在问你认为自己在问什么,值得注意的是术语上的差异。
如果您有一个声明为double
类型的变量,那么它肯定是double
。如果您有一个变量,它被声明为object
、ValueType
类型或它支持的接口之一,那么您可以使用
if (value is double)
但听起来你真正想知道的是,字符串值是否可以解析为double
。为此,你应该使用double.TryParse
,但你也需要思考你对什么文化感兴趣。例如,你会将"15,5"视为有效的double
吗?欧洲用户可能会,但美国用户可能不会。是否允许使用数千个分隔符?
我强烈建议您使用需要IFormatProvider
的重载,并使用适当的区域性。即使您感兴趣的文化是默认的,也值得明确这一点。
你可能想要:
double result;
// For suitable values of text, style and culture...
bool valid = double.TryParse(text, style, culture, out result);
然后使用valid
变量来确定它实际上是否被正确解析。如果valid
为真,那么result
的值就是解析的值。如果valid
为false,则result
将为0。
使用Double.TryParse
方法:
double price;
if (Double.TryParse(txtPrice.Text, out price))
{
Console.WriteLine(price);
}
else
{
Console.WriteLine("Not a double!");
}
你不能直接使用:吗
double.Parse(txtPrice.Text);
如果字符串值不是双精度,则会出现FormatException,显示"输入字符串的格式不正确"。
你为什么不试试这样的东西-
double doubleVar;
if( typeof(doubleVar) == double ) {
printf("doubleVar is of type double!");
}
这可以很容易地检查变量是否为double类型。
如果您不确定在调用方法生成数字时返回的是什么,也可以使用.GetType()返回变量的类型。看见http://msdn.microsoft.com/en-us/library/58918ffs(v=vs.71).aspx作为示例。
您可以使用
double.ParseExact
或- 使用Regex检查它是否有效
Double.TryParse就是您想要的。
如果我答对了你的问题,你的意思是你只想允许数字对吗?如果这是真的,那么也许这会对你有所帮助。
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");
您可以使用double.TryParse()
,如果它不能创建双精度,它将返回false
。