BASIC4MCU | 질문게시판 | atmega128 lcd 소수점 출력
페이지 정보
작성자 c린이 작성일2018-12-03 10:13 조회15,892회 댓글5건본문
#define se 30
unsigned char sbuf[16];
int i, a,cnt, ratio =0;
float v2, sums, avg = 0;
void aa()
{
for(i = 0; i<30; i++)
{
a++;
delay_ms(10);
}
if(a>=30)
{sums = ("%.3f",1/30);
cnt = 0;
}
}
void LCD_write()
{sprintf(sbuf,"Dust:%.3fug/m3",sums);
lcd_puts(sbuf);
delay_ms(3000);}
void main(void)
{
PORTA = 0x00;
DDRA = 0xff;
PORTC = 0x00;
DDRC = 0xff;
PORTB = 0x00;
DDRB = 0xff;
PORTF = 0x00;
DDRF = 0xfE;
while(1)
{
LCD_write();
aa();
}
}
1/30 은 0.0333333333... 인데 lcd 에서는 0이 나오네요 ㅠㅠ
그래서 3째 자리수 끊어서 출력하라고 했는데도 0이 나오구요..
0.2*0.2 = 0.04 잘 출력되는데 왜 나누기만 하면 안될까요??
댓글 5
조회수 15,892master님의 댓글
master 작성일
sums = ("%.3f",1/30);
printf() 함수를 사용하지 않고 괄호만 해주면 %.3f가 적용될까요?
sums = 1./30.;
c린이님의 댓글
c린이
printf() 함수를 사용시에만 되는거군요
감사합니다..
c린이님의 댓글
c린이 작성일
sums = 1./30.; 무슨 뜻인지 알수있을까요?
master님의 댓글
master
1. 은 1.0 하고 같은 겁니다.
실수로 적어줘야지 실수로 연산을 하겠죠
c린이님의 댓글
c린이
아 이해 했습니다 감사합니다