2011-01-12 10 views
11

¿Cómo puedo verificar si un número flotante contiene decimales como 2.10, 2.45, 12382.66 y no 2.00, 12382.00. Quiero saber si el número es "redondo" o no. ¿Cómo puedo hacer eso programáticamente?Comprueba si un número flotante contiene decimales o no

+1

mirarlos? Si quieres una solución programática, entonces danos más información. – skaffman

+2

(y el idioma en el que está trabajando) – dkarp

Respuesta

5

Si se preocupan solamente cerca de dos decimales, obtener el resto calculando bool hasDecimals = (((int)(round(x*100))) % 100) != 0;

En caso genérico obtener una parte fraccionaria como se describe en this topic y lo comparan con 0.

+2

Esto funcionó muy bien para mí. Estoy usando Objective-C por cierto. Siempre que sepa cuántos decimales le importa evaluar, esto es simple y hace el trabajo. Y puede modificarlo multiplicando 10 por el poder de la cantidad de puntos decimales que le interesan, para reemplazar las ocurrencias de "100" en la muestra anterior, para hacerlo aún más flexible. – idStar

3

Usted puede hacer esto:

float num = 23.345f; 
    int intpart = (int)num; 
    float decpart = num - intpart; 
    if(decpart == 0.0f) 
    { 
    //Contains no decimals 
    } 
    else 
    { 
    //Number contains decimals 
    } 
40

Utilizando el módulo funcionará:

if(num % 1 != 0) do something! // eg. 23.5 % 1 = 0.5

+2

Excelente respuesta, pero esto no funcionará en [PHP] (http://php.net/manual/en/language.operators.arithmetic.php): "Los operandos del módulo se convierten en enteros (eliminando la parte decimal) antes de procesar ". – Daan

6

puedo utilizar esta función para c c objetivo

BOOL CGFloatHasDecimals(float f) { 
    return (f-(int)f != 0); 
} 
2
import java.lang.Math; 
public class Main { 
    public static void main(String arg[]){ 
     convert(50.0f); 
     convert(13.59f); 

    } 

    private static void convert(float mFloat){ 
     if(mFloat - (int)mFloat != 0) 
      System.out.println(mFloat); 
     else 
      System.out.println((int)mFloat); 
    } 
} 
Cuestiones relacionadas