Es que estas restando un entero a un punto flotante... prueba con este.
tambien este es valido
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(){
double x=123.456;
x-=123.0;
if (*(int*)&x==0.456)cout<<"Iguales";
}
tambien este es valido
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(){
double x=123.456;
x-=123f;
if (*(int*)&x==0.456)cout<<"Iguales";
}