Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР.

 
Опции темы
Непрочитано 22.02.2007, 18:49  
ReiseReise
Прохожий
 
Регистрация: 25.08.2005
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ReiseReise на пути к лучшему
По умолчанию

Советую флоат в епроме не хранить (если числа маленькие), лучше хранить их как инт или лонг. Имею ввиду примерно это
float c;
long k = c*10^(количество разрядов после запятой);

Потом при вычислении использовать тип флоат опять. Но повторяю, это если разрядность твоего числа влезает в разрядность типа данных.
ReiseReise вне форума  
Непрочитано 23.02.2007, 01:02  
masterpc
Временная регистрация
 
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
masterpc на пути к лучшему
По умолчанию

Было принято следующее рещение. Хранить коэффициенты в массивах, а для использования в формуле преобразовывать. Тогда и отображение будет точное и сама переменная будет близка к идеалу. А то запарился я что-то. Конечно было бы очень не плохо разобраться с sprintf, я пробовал и ничего не получилось. Не въехал что-то. Кому интересно нашел в хелпе IAR описание функции sprintf, смотрите в атаче.

Прикрепленный файл: 3375307.rar
__________________
Музыка и звук - не одно и тоже...
masterpc вне форума  
Непрочитано 24.02.2007, 12:57  
ipnni
Прохожий
 
Регистрация: 02.11.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ipnni на пути к лучшему
По умолчанию

Если бы я делал что-то похожее, то я бы сделал примерно так:

//Использовал массив коэффициентов (вещественный тип)
float coeffs[N];

// Ввод коэффициента и отображение его на
// индикаторах.
// На выходе функции значение коэффициента в
// вещественном формате
float enterCoeff( void )
{
// Символьный массив для хранения введенных чисел
char buf[5];

// как-то вводим число

// тут же отображаем введенное число
//..

// записываем введенное число
// в нужную позицию массива, при этом
// преобразуем десятичное число в ASCII код
if( это число )
buf[i] = десятичное_число + '0';
else
buf[i] = '.';

buf[4] = 0; // Формируем строку
// используем стандартную функцию для перевода
// строки в вещественное число
// (исп. #include ‹stdlib.h›)
return atof(buf);

}

/* Пример как может выглядеть массив:
buf[0] = '1';
buf[1] = '7';
buf[2] = '.';
buf[3] = '1';
buf[4] = 0;
*/

Дальше где нужно используем:
coeffs[i] = enterCoeff();
ipnni вне форума  
Непрочитано 24.02.2007, 17:56  
masterpc
Временная регистрация
 
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
masterpc на пути к лучшему
По умолчанию

Спасибо большое всем, кто отозвался на мою проблему!!! Я решил ее немного по другому: оставил только один знак после запятой, а ввожу число путем манипуляций с этим же числом. Все работает просто отлично, но без вашей помощи я бы долго еще мучился.
__________________
Музыка и звук - не одно и тоже...
masterpc вне форума  
Непрочитано 25.02.2007, 02:20  
AlexWeber
Прохожий
 
Регистрация: 28.09.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AlexWeber на пути к лучшему
По умолчанию

masterpc пробовал ли ты заменить

switch (point){
case 0 : break;
case 1 : SUM=SUM/100; break;
case 2 : SUM=SUM/10; break;
}

на

switch (point){
case 0 : break;
case 1 : SUM=SUM*0.01; break;
case 2 : SUM=SUM*0.1; break;
}

?
AlexWeber вне форума  
Непрочитано 28.02.2007, 11:37  
alexvm123
Прохожий
 
Регистрация: 24.08.2005
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
alexvm123 на пути к лучшему
По умолчанию

Сообщение от masterpc
Конечно было бы очень не плохо разобраться с sprintf, я пробовал и ничего не получилось. Не въехал что-то. Кому интересно нашел в хелпе IAR описание функции sprintf, смотрите в атаче.
Согласно приложенному описанию, то что я вам написал должно работать, если sprintf поддерживает то, что описано в описании про printf:
Код:
sprintf(buf, "%.1f", SUM);
А вот конкретный пример из вашей документации (выделил важное):
Цитата:
printf("%.0f %#.0f", 31.0, 31.0)generates 31 31.
You write %g or %G to generate a signed decimal fractional representation with or without a decimal power-of-ten exponent, as appropriate. For %g conversion, the generated text takes the same form as either %e or %f conversion. For %G conversion, it takes the same form as either %E or %F conversion. The precision p specifies the number of significant digits generated. (If p is zero, it is changed to 1.) If %e conversion would yield an exponent in the range [-4, p), then %f conversion occurs instead. The generated text has no trailing zeros in any fraction and has a decimal point only if there are nonzero fraction digits, unless you specify the # format flag.


Прикрепленный файл: 3375307.rar
alexvm123 вне форума  
Непрочитано 01.03.2007, 22:43  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Тут просто все. Возьми и проведи вычесления: отдельно целая часть, отдельно дробная.
retcom вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интересная прога для мониторинга USB GNN Микроконтроллеры, АЦП, память и т.д 0 09.07.2009 11:56
Весьма интересная задача для AVR (паралельное вычисление) ua_gruzin Микроконтроллеры, АЦП, память и т.д 10 24.10.2008 17:07
Интересная схемка dimmich Электроника - это просто 8 12.05.2008 08:40
Интересная информация... dosikus Микроконтроллеры, АЦП, память и т.д 3 11.08.2007 23:07


Часовой пояс GMT +4, время: 00:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot