Я запускаю простую программу на 64-битной машине Cnetos 6.2.0.typecasting long to float using gcc libraries
int main()
{
int b = 1078085270;//1078085218;
float a;
a = (float)(b);
printf("val of a is %f\n",a);
return 0;
}
Выходной сигнал а является 1078085248. я изменил значение 1078085218. еще получил тот же результат. Я не могу понять, почему или как результат поврежден или изменен?
Может ли кто-нибудь объяснить, пожалуйста?
'float' не имеет такой высокой точности. – Mysticial
Прочитайте статью [Wikipedia] (http://en.wikipedia.org/wiki/IEEE_floating_point) о том, как ваша машина обрабатывает числа с плавающей запятой, а затем задумайтесь над своим вопросом. – fuz
Моя машина имеет 4 байта для хранения данных типа float. Не могли бы вы сообщить мне, как я могу узнать точную точность поплавка? –