Copypaster 0 13 октября, 2009 Опубликовано 13 октября, 2009 · Жалоба При работе с вещественными типами в IAR возникло следующее недопонимание. В документе EW430_CompilerReference.pdf говорится, что float имеет разрядность 32-бита, а тип double по умолчанию имеет разрядность также 32, либо 64 бита. В процессе отладки на плате наблюдается, что при установке в параметрах проекта размера для типа double в 64-бита, количество значащих цифр увеличивается до 15-ти разрядов, НО тоже наблюдается и для типа float, хотя в документе, насколько я понимаю, заявлено, что установка 64-разрядного размера для double не должна влиять на тип float и для него количество значащих цифр не должно превышать 7. Кто может, пожалуйста, поясните это противоречие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Вы бы пример кода привели. Про отладчик, что он там показывает, не знаю. Включите генерацию листинга и смотрите, что ИАР Вам сгенерил. Если включена опция, что double 64 бита, то float занимает 4 байта, double - 8 байт. Но константы по умолчанию типа double, и если в выражениях присутствуют константы, то всё будет считаться в дублях... Надо ручками приведение типов делать. (float)1.422725 Дайте пример кода, прямо на нём проще объяснить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msalov 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Надо ручками приведение типов делать. (float)1.422725 либо 1.422725f Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Copypaster 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Надо ручками приведение типов делать. (float)1.422725 Да вы правы, теперь я понял в чем дело. Спасибо за вашу помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться