¿Cómo puedo saber si el valor de mi objeto es un valor flotante o int?¿Cómo puedo saber si el valor de mi objeto es un flotante o int?
Por ejemplo, me gustaría que me devuelva valor de bool.
¿Cómo puedo saber si el valor de mi objeto es un valor flotante o int?¿Cómo puedo saber si el valor de mi objeto es un flotante o int?
Por ejemplo, me gustaría que me devuelva valor de bool.
¿Obtiene el valor en forma de cadena? Si es así, no hay forma de decir inequívocamente cuál es, porque hay ciertos números que pueden representarse por ambos tipos (bastantes de hecho). Pero es posible decir si es uno o el otro.
public bool IsFloatOrInt(string value) {
int intValue;
float floatValue;
return Int32.TryParse(value, out intValue) || float.TryParse(value, out floatValue);
}
Asumo que decir algo en la línea de ...
if (value is int) {
//...
}
if (value is float) {
//...
}
if (value.GetType() == typeof(int)) {
// ...
}
Esta es una forma un poco complicada (y menos eficiente) de hacerlo, cuando puede usar la palabra clave 'is'. – Noldorin
@Noldorin: De acuerdo. Para 'bool' o' int' (o cualquier 'struct', para el caso),' is' es definitivamente mejor. Pero para otras clases 'is' devolverá true incluso si el tipo real es una clase derivada y no el tipo exacto. –
@Noldorin: menos eficiente para qué? ¿No debería el IL ser idéntico? –
Si se refiere a una object
que es un (en caja) float
/int
- if(obj is float)
etc
Si se refiere a string
que podría ser ... int.TryParse(string, out int)
/float.TryParse(string, out float)
Double.TryParse e Int.TryParse pueden ser lo que necesita, aunque esto supone que está trabajando con una cadena dada por un usuario.
El método TryParse en varios tipos devuelve un valor booleano. Se puede utilizar de esta manera:
string value = "11";
float f;
int i;
if (int.TryParse(value, out i))
Console.WriteLine(value + " is an int");
else if (float.TryParse(value, out f))
Console.WriteLine(value + " is a float");
Creo que es útil para u aquí estamos decidiendo valor del objeto es si es INT o flotar
public class Program
{
static void Main()
{
Console.WriteLine("Please enter Any Number");
object value = Console.ReadLine();
float f;
int i;
if (int.TryParse(Convert.ToString(value), out i))
Console.WriteLine(value + " is an int");
else if (float.TryParse(Convert.ToString(value), out f))
Console.WriteLine(value + " is a float");
Console.ReadLine();
}
}
Vamos a necesitar más información con el fin para responder a esto ... ¿De dónde viene el valor? – chills42