Люди,помогите по С,только учусь.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
|
Отправлено
gram 01 июня 2003 г. 17:21
|
|
|
|
Нужно выполнить следующее:
#define a 268435456
#define b 25000000
unsigned int freq=7956044;
unsigned int code;
code = (a*freq)/b;
Умножать сразу нельзя(переполнение),сначала делю a на b , потом умножаю на freq.Из за отбрасывания дробной части возникает недопустимо большая ошибка значения code.Что посоветуете?Работаю с CodeVision.
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Как-то странно смотрится все это извращение (+) — Pol-SDG (02.06.2003 11:15, 634 байт)
- code = ((float)(a/b))*freq; — 0men (01.06.2003 17:42, пустое)
- Не знаешь - не лезь с дурацкими советами. Только человека с толку сбиваешь. — ... (01.06.2003 22:33, 286 байт)
- И в-четвертых разделите целое 268435456 на целое 25000000 и покажите, пожалуйста, как в этом случае образуется целая часть, равная нулю? — 0men (01.06.2003 23:14, пустое)
- Во-первых смотрте цитату ниже (где я исправился) и читайте стандарты: идет расширение целого 'a' до float, соответственно, 'b' расширяется до float, результат деления float, умножения float, в КОНЦЕ НЕЯВНОЕ преобразование всего результата в long. Во-вторых (+) — 0men (01.06.2003 23:08, 146 байт)
- Ошибочка вышла, лишние скобки, вот так нужно: code = ((float)a/b)*freq; — 0men (01.06.2003 17:49, пустое)
- Извините,вместо int должно быть long - описка. — gram (01.06.2003 17:36, пустое)
- code = 85427371,96384256, что больше, чем предельное значение unsigned int = 65535, используйте unsigned long int. — Посторонним В. (01.06.2003 17:35, пустое)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru