Вывод чисел с плавающей точкой на жк дисплей? Имеется две функции, одна выводит на экран целое число, другая одно число после точки. Вторая функция не работает, то есть выводит просто ноль, но если во вторую функцию передать аргумент без целого числа то все работает без проблем.void return_celoe(double data)
{
double ostatok, celoe,data1;
unsigned char otvet,mass[10],count=1, mass1;
ostatok=modf(data, &celoe);
otvet=celoe;
data1=celoe;
if(otvet==0)
lcd_dat(0x30);
while(otvet>0)
{
data1/=10.0;
otvet=data1;
ostatok=modf(data1, &celoe);
mass1=ostatok*10.0+0x30;
mass[count]=mass1;
count++;
}
while(count>1)
{
lcd_dat(mass[--count]);
}
}
void return_ostatok(double data)
{

double ostatok, celoe, data1=data;
int otvet, sto;
ostatok=modf(data1, &celoe);
otvet=ostatok*10.0;
lcd_dat(otvet+0x30);
}
int main(void)
{
lcd_init();
return_celoe(7990324.9); /*НА РАЗНИЦУ МЕЖДУ ЦЕЛЫМИ ЧИСЛАМИ НЕ ОБРАЩАЙТЕ ВНИМАНИЯ*/
lcd_dat('.');
return_ostatok(7999.9); /*ЗДЕСЬ ЕСЛИ НАПИСАТЬ НЕ 7990324.9 А 0.9 ТО ВСЕ РАБОТАЕТ, ТАКЖЕ ЕСЛИ ПЕРЕДАТЬ 7999.9 ТО НА ЭКРАН ВЫВОДИТСЯ 7999.8
А ЕСЛИ 799.9 ТО ТАК ЖЕ 799.9 ПОЧЕМУ ТАК? */

}
Как я думаю чем больше целое число тем больше остаток растягивается

21 Авг 2019 в 06:05
164 +1
0
Ответы
1

на 10 и в итоге может быть округлен в меньшую сторону. Возможно, это происходит из-за специфики представления чисел с плавающей точкой в памяти компьютера. Для более точного вывода чисел с плавающей точкой на жк дисплей, можно попробовать использовать другой подход или библиотеки для работы с числами с плавающей точкой.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир