| Автор |
Съобщение |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
 Математика с дробни числа в CodevisionAVR
Колеги,нямам достатъчно опит с математиката в С.Реших да си поиграя с една ATMEGA8.Свързал съм едно LCD и изпробвах доста от библиотеките и функциите на CodevisionAVR.Не мога да разбера тези контролери изобщо могат ли да смятат дробни числа.Пробвах функциите ftoa,sprintf в хиляда варианта ,задавах променливи от типа float и int ,но така и не мога да получа верен резултат.Функциите ми извеждат само цялото число ,а това което е след запетаята са нули.Примерно числото 123,456 се извежда като 123,000.Къде според вас е проблема.
|
| Вто Мар 06, 2007 10:54 am |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
Ми няма проблем, ти си нещо в грешка, постни код да видим. А иначе аз печатам на LCDто така
lcd_puts(mystr);
|
| Вто Мар 06, 2007 1:01 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Примерно:
float temp;
char lcd_buffer[33];
lcd_init(16);
temp=234,552;
sprintf(lcd_buffer ,"%3.3f",temp);
lcd_clear();
lcd_puts(lcd_buffer);
извежда ми 234.000,къде е 552
|
| Вто Мар 06, 2007 1:10 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
A слу4айно да си забравил да вкл опцията за scanf i printf в project configa да са за float temp=234,552; <<<-----СЛОЖИЛ СИ ЗАПЕТАЙКА ВМЕСТО ТОЧКА
Последна промяна VSU на Вто Мар 06, 2007 1:26 pm, променена общо 1 път
|
| Вто Мар 06, 2007 1:19 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
включих само тази за sprintf
|
| Вто Мар 06, 2007 1:22 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Опитвам се да разделя две числа ,но пак ми дава само цялото число ,а другото са нули.Примерно същия код само че temp=254/195; ми дава само 1.000
|
| Вто Мар 06, 2007 1:26 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Да ,с точката стана изведе ми и другата част.Признавам го за грешка,но със сметките не иска ,пак извейда цялото число
|
| Вто Мар 06, 2007 1:28 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
а това го за пиши ТАКА temp=254.0/195.0; или temp=254. / 195. ;
|
| Вто Мар 06, 2007 1:31 pm |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
float temp;
char mystr[16];
temp=123.4567;
ftoa(temp, 6, mystr);
lcd_clear();
lcd_puts(mystr);
десетичната точка е точка а не запетайка;)
|
| Вто Мар 06, 2007 1:31 pm |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
Брей колко сте бързи, докато напиша 2 реда и сте направили 10 пшоста
Няма лошо 
|
| Вто Мар 06, 2007 1:33 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Ако може пиши нещо за сметките,защо пак се извежда цялото число,а другото са 000.Много е интересно това което ми изпрати,с коя програма го направи ,ако не е тайна.
|
| Вто Мар 06, 2007 1:36 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Най-после ,заработи.Много съм ти благодарен.Два дена си бих главата
|
| Вто Мар 06, 2007 1:39 pm |
|
|