Тема: float<->int
Показать сообщение отдельно

  #6  
Старый 23.09.2007, 21:27
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
С нами: 9894190

Репутация: 215
По умолчанию

Недавно как раз такую писал. Т.к. флоат занимает 32 бита, аргумент x в действительности является флоатом, просто по условию поставленной передо мной задачи этот тип использовать было вообще нельзя..
Код:
__int32 IntFormFloat(DWORD x) {
	CHAR poryadok = ((x >> 23) & 0xFF) - 127;
        if (poryadok < 0)
        	return 0;

        // Выталкиваем мантиссу и пририсовываем сэкономленную
        // нормализацией единицу
	__int32 mantissa = (x & 0x7FFFFF) | 0x800000;

        mantissa >>= (23 - poryadok);
	if (x >> 31)
        	mantissa *= -1;
	return mantissa;


}
 
Ответить с цитированием