2009-06-11 11 views

Respuesta

3

¿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); 
} 
14

Asumo que decir algo en la línea de ...

if (value is int) { 
    //... 
} 

if (value is float) { 
    //... 
} 
4
if (value.GetType() == typeof(int)) { 
    // ... 
} 
+0

Esta es una forma un poco complicada (y menos eficiente) de hacerlo, cuando puede usar la palabra clave 'is'. – Noldorin

+0

@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. –

+0

@Noldorin: menos eficiente para qué? ¿No debería el IL ser idéntico? –

2

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)

4

Double.TryParse e Int.TryParse pueden ser lo que necesita, aunque esto supone que está trabajando con una cadena dada por un usuario.

2

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"); 
1

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(); 
     } 
    } 
Cuestiones relacionadas