Как я могу достоверно проверить, является ли переменная двойной?
Вы должны быть более ясными о том, что вы действительно пытаетесь сделать здесь. Я не думаю, что вы спрашиваете, о чем вы думаете, и вам стоит знать о различиях в терминологии.
Если у вас есть переменная , объявленная типа 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
равно true, то значение result
является проанализированным значением. Если valid
ложно, result
будет 0.