Comparación de variables flotantes y dobles [duplicado]

Posibles duplicados:
Diferencia entre flotador y doble
salida extraña en comparación de flotante con flotante literal

Estoy usando Visual C ++ 6.0 y en un programa estoy comparando variables flotantes y dobles. Por ejemplo, para este programa

#include<stdio.h>
int main()  
{    
    float a = 0.7f;
    double b = 0.7; 
    printf("%d %d %d",a<b,a>b,a==b);
    return 0;
 }  

Estoy obteniendo 1 0 0 como salida

y para

#include<stdio.h>
int main()  
{    
    float a = 1.7f;
    double b = 1.7; 
    printf("%d %d %d",a<b,a>b,a==b);
    return 0;
 }  

Estoy obteniendo 0 1 0 como salida.

Dígame por qué obtengo estos resultados extraños y hay alguna forma de predecir estos resultados en el mismo procesador. Además, ¿cómo se hace la comparación de dos variables en C?

Respuestas a la pregunta(4)

Su respuesta a la pregunta