저는 마이크로 컨트롤러 atmega168 (8 비트)을 프로그래밍하고 있습니다.이상한 부동 소수점 올림
이float A = cos(- (2/3) * M_PI);
포함하여 대신 -0.5을 갖는 과정 math.h (#DEFINE의 M_PI 3.14159265358979323846) 결과
,의, 내가 1
를 얻을 :내가 좋아하는 뭔가를하고 싶어
나는 내 PC에 직렬 통신을 사용하여 결과를 확인한다. 설정 한 경우 플로트 번호로도 작동하기 때문에 확실하다.
A= -0.50;
올바른 결과가 나타납니다.
추신. 나는 더블을 사용할 수 없다. 왜냐하면 내가 그 이유를 알지 못하기 때문이다.
도와주세요!
표현식 '2/3'은 정수로 나누어 져 표현식 전체가 'float'에 할당 된 경우에도 '0'을 산출합니다. '(2.0/3.0)'을 시도해보십시오. –