2010-02-27 14 views

Respuesta

13

Modificación del código de Rob con respecto al comentario de sterofrog. Verifique el código para asegurarse de que el valor sea también numérico.

function is_round($value) { 
    return is_numeric($value) && intval($value) == $value; 
} 
+0

Si está comprobando si un número es redondo, ya debería haber verificado que una variable es realmente un número. 'is_round ('bar') => false' no tiene ningún sentido. –

6
function is_round($value) { 
    return intval($value) == $value; 
} 
+0

** @ stereofrog: ** ¿Cómo es posible? 'intval ('bar')! = 'bar'' desde' 0! =' bar''. –

+0

@stereofrog: Wow ... –

-1

La función especificada en this page por thierryreeuwijk debe especificar sus necesidades.

+1

No estoy del todo seguro, porque la variable entrante sigue siendo un 'float'. ¿O estoy equivocado y esto funcionará? –

-1
if ($value = round($value)) 

debería funcionar.

1

Una versión mucho más corta: !fmod($num,1) en PHP o esto en JS: !($num % 1)

En función (más legible):

function is_round($num) { 
    return !fmod($num, 1); 
} 

Esto funciona sobre la base de que cualquier número que no es exactamente 0 es falsey. Puede usar fmod($num,1) para obtener los decimales de un número; una vez que tenga esos solo puede ! ellos.

Cuestiones relacionadas