Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

C18 и float
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6156
Страница 1 от 1

Автор:  perro_iv [ Вто Окт 07, 2008 12:13 pm ]
Заглавие:  C18 и float

Искам една float стойност да я покажа на LCD-то. За целта трябва да я преобразувам в стойност от тип char.
Гледам че няма готова функция.
Дайте малко идей.

Автор:  БатеВаньо [ Вто Окт 07, 2008 2:19 pm ]
Заглавие: 

sprintf()

Автор:  valioman [ Сря Окт 08, 2008 8:50 am ]
Заглавие: 

printf() също би трябвало да има такава опция ..... поне в CCS има де

Автор:  Cekins [ Сря Окт 08, 2008 10:16 am ]
Заглавие: 

Теоретично постановката е : умножаваш флоата по 10,100,1000 в зависимост до кой знак искаш да покажеш, след това си "екстраткваш" по отдделно цифрите от числото (има го описано обширно в една тема как става номера), слагаш си точката на подходящото място и си готов.

Автор:  Ки4о [ Сря Окт 08, 2008 10:58 am ]
Заглавие: 

float d;
char outString[8];
sprintf(outString,"%4.3f",d);

Автор:  rumen65 [ Сря Окт 08, 2008 11:36 am ]
Заглавие: 

До колкото си спомням, С18 не поддържаше %f, CCS и C30 го поддържат. Правил съм го с %d, и преобразуване на цялата и дробната част (до съответния знак) към цяла.

Автор:  [ Сря Окт 08, 2008 4:02 pm ]
Заглавие: 

Можеш да направиш следното:
Код:
int whole, rest;
float f;
char string[20];
whole = (int)f; // получаваш цялата част
rest = 100 * ( f - (float)whole ); // получаваш дробната част с точно 2 знака
sprintf(string,"%d.2d", whole, rest ); // разпечатка на дробното число в стринг

Автор:  perro_iv [ Сря Окт 08, 2008 4:50 pm ]
Заглавие: 

¶ написа:
Можеш да направиш следното:
Код:
int whole, rest;
float f;
char string[20];
whole = (int)f; // получаваш цялата част
rest = 100 * ( f - (float)whole ); // получаваш дробната част с точно 2 знака
sprintf(string,"%d.2d", whole, rest ); // разпечатка на дробното число в стринг
:prayer: :supz:


малка корекция:

sprintf(string,"%d.%2d", whole, rest );

още едно допълнение:

if (rest < 10)
{
sprintf(string,"%d.0%d", whole, rest); // разпечатка на дробното число в стринг
}

else
{
sprintf(string,"%d.%2d", whole, rest); // разпечатка на дробното число в стринг
}

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/