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

 
 
> Как sprintf() работает с float числами?
Александар
сообщение Apr 28 2008, 09:18
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 28-08-07
Пользователь №: 30 106



Q правильно преобразуется, а E не понятно как.
в прикрепленном файле содержимое массива Str после выполнения функции.

#include <avr/io.h>
#include <stdio.h>

unsigned char Q=5;
char Str[16];
double E=2.15;
int main(void) //
{

sprintf(Str, "Q=%d E=%2.2f %s",Q, E, "FFF");
__asm__ volatile("nop");

}
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Apr 28 2008, 10:18
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



по-моему, с ключом %f надо выводить флоты, а не даблы
По результату похоже, что неправильно распаковывается число Е.
попробуйте обозвать его float
или выводить (float)E


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
aesok
сообщение Apr 28 2008, 10:23
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(MrYuran @ Apr 28 2008, 14:18) *
по-моему, с ключом %f надо выводить флоты, а не даблы
...


В avr-gcc типы float и double идентичны, по крайней мере сейчас.

Анатолий.
Go to the top of the page
 
+Quote Post



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

 


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


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