реклама на сайте
подробности

 
 
> Преобразование double во float
MKdemiurg
сообщение Aug 21 2013, 15:06
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939



Собс-но сабж.
Есть число выдаваемое прибором формата DOUBLE.
При этом в компиляторе нет этого формата , а есть float и long int;
Как пересчисчитать с потерей точности и размерности?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MKdemiurg
сообщение Aug 22 2013, 13:30
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939



Это понятно! А что с экспонентой то делать.
В дабле 11 бит, а во флоате - 8.

То что раньше делал - не влезает в long int результат умножения .
Пошёл по такому пути.

typedef struct
{
unsigned long int mantissa_lo : 29;
unsigned long int mantissa_hi : 23;
unsigned char exponent_lo : 4;
unsigned char exponent_hi : 7;
unsigned char sign : 1;
} double_format;

typedef struct {
unsigned long int mantissa : 23;
unsigned char exponent : 8;
unsigned char sign : 1;
}float_format;


union double_union
{
double_format dbl;
unsigned char b[8];
}dbl_union;

union float_union
{
float_format flt;
float F;
unsigned char b[4];
}flt_union;
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 20:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016