2012-03-08 20 views
6

tengo que comprobar si una variable es un número entero, decir que tengo el código:¿Hay alguna manera de verificar si una variable es un número entero? C++

double foobar = 3; 
//Pseudocode 
if (foobar == whole) 
    cout << "It's whole"; 
else 
    cout << "Not whole"; 

¿Cómo voy a hacer esto?

+0

gritos lo siento, doble significado, acaba de editar – Billjk

+2

yo creo que hay un problema de XY: usted tiene un problema X e Y solución potencial, por lo que está preguntando por este último a pesar de que debería ser preguntando por el primero. –

Respuesta

13

Suponiendo foobar es en realidad un valor de punto flotante, se puede redondear y comparamos con el número en sí:

if (floor(foobar) == foobar) 
    cout << "It's whole"; 
else 
    cout << "Not whole"; 
+0

No hay nada que redondear en un entero. –

+0

whoops lo siento, significó doble, acaba de editar – Billjk

2

está usando el int por lo que siempre será un número de "todo". Pero en caso de que esté usando un doble, entonces puede hacer algo como esto

double foobar = something; 
if(foobar == static_cast<int>(foobar)) 
    return true; 
else 
    return false; 
1

Depende de su definición de número entero. Si considera solo 0 o más como un número entero, entonces es tan simple como: bool whole = foobar >= 0;.

+0

@downvoter: La definición de número entero no es precisa. Ver wikipedia: http://en.wikipedia.org/wiki/Whole_number. – Asha

+0

eh, nunca he oído hablar de eso. Cada vez que aparece, todas las personas con las que hablo coinciden en la definición. –

0

simplemente escriba un function o expression para comprobar whole number, devolviendo bool.

en la definición habitual, creo que el número entero es mayor que 0 sin parte decimal.

entonces,

if (abs(floor(foobar))== foobar) 
    cout << "It's whole"; 
else 
    cout << "Not whole"; 
+1

Nota: hay una edición sugerida "demasiado radical" rechazada: http://stackoverflow.com/review/suggested-edits/5928097 –

Cuestiones relacionadas