Имеется две функции, одна выводит на экран целое число, другая одно число после точки. Вторая функция не работает, то есть выводит просто ноль, но если во вторую функцию передать аргумент без целого числа то все работает без проблем.
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 ПОЧЕМУ ТАК? */
}
Как я думаю чем больше целое число тем больше остаток растягивается