我需要检查我所拥有的变量是否属于数据类型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;
}
Run Code Online (Sandbox Code Playgroud)
我认为这会起作用,但显然,我没有意识到txtPrice.Text
除了数字之外还有其他任何东西,该Convert
课程只会解析出来.
如何才能真实地检查变量是否为双精度?
ion*_*den 30
用这个:
double price;
bool isDouble = Double.TryParse(txtPrice.Text, out price);
if(isDouble) {
// double here
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
如何才能真实地检查变量是否为双精度?
你需要什么你更清晰真的想在这里做.我不认为你在问你认为你在问什么,并且值得了解术语的不同之处.
如果你有一个被声明为类型的变量double
,那么肯定是一个double
.如果你有一个被声明为类型的变量object
,ValueType
或者它支持的其中一个接口,那么你可以使用
if (value is double)
Run Code Online (Sandbox Code Playgroud)
但听起来你真正想知道的是字符串值是否可解析为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);
Run Code Online (Sandbox Code Playgroud)
然后使用该valid
变量来确定它是否实际被正确解析.如果valid
为true,则值为result
解析后的值.如果valid
为false,则为result
0.
double price;
if (Double.TryParse(txtPrice.Text, out price))
{
Console.WriteLine(price);
}
else
{
Console.WriteLine("Not a double!");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44672 次 |
最近记录: |