Estoy haciendo algunos cálculos matemáticos (tratando de convertir el código de Matlab en C++, usando VS2010) y necesito poder decir si en algún momento obtengo un 0 0.Detectando un 0 negativo almacenado como un doble en C++
negativoDe acuerdo con el estándar IEEE -0/+ 0 difieren solo en el bit de signo (el resto son 0).
He utilizado el siguiente fragmento de código (post) para interpretar mi doble como un unsigned char
double f = -5;
unsigned char *c = reinterpret_cast<unsigned char *>(&f);
for(int i=(sizeof(double)-1); i>=0; i--){
printf("%02X", c[i]);
}
Tratando con 5/-5 consigo el resultado esperado:
C014000000000000 (-5)
4014000000000000 (5)
Pero cuando lo intento con 0/-0 obtengo solo ceros en ambos casos. VS2010 declara que es compatible con IEEE (msdn), por lo que no estoy seguro de qué parte de él no estoy obteniendo.
Si 0/-0 de hecho están almacenados en la memoria de la misma manera, no hay manera de que pueda distinguirlos si es necesario, así que debería dejar de perder mi tiempo :) ¿Verdad?
pruebe -0.0 en lugar de -0 – wimh