최상의 답변
부동 소수점 숫자는 컴퓨터 메모리에 정확하게 저장되지 않습니다. 이는 부동 소수점 숫자가 가장 가까운 이진 표현으로 근사되기 때문입니다. 따라서
float a=0.87;
float b=0.87;
if(a==b){
printf("Equal \n");
} else {
printf("Not equal \n");
}
기회 “같지 않음”이 인쇄됩니다. 이제 질문이 생겼습니다. 2 개의 부동 소수점 숫자가 같은지 어떻게 확인합니까?
여기서 1e-12가 등장합니다. 2 개의 부동 소수점 숫자 사이에서 1e-12보다 작은 것은 같을만큼 충분히 낮은 것으로 간주됩니다. 따라서 두 번째 매크로에서는 a의 절대 값이 1e-12보다 작은 지 확인합니다. 프로그램은 다음과 같이 보일 수 있습니다. / p>
float a=0.87;
float b=0.87;
if(zero(a-b)){
printf("Equal \n");
} else {
printf("Not qqual \n");
}
“Equal”인쇄가 보장됩니다.
나는 도움이됩니다.
답변
글쎄요, 그가 전혀 신경 쓰지 않는다면-논의 할만큼 충분히-당신의 일은 불가능합니다.
그가 말하고 싶지만 코드를 보거나 배우고 싶지 않다면 그와 함께이 게임을 해보세요. 당신은 자율성이없는 로봇입니다. 그의 임무는 소파에서 일어나 주방에 가서 땅콩 버터와 젤리 샌드위치 4 개를 만드는 것입니다. 그는 당신에게 영어 명령을 내림으로써 이것을해야 할 것입니다.
당신은 “걷기”및 “서랍에서 칼 가져 오기”와 같은 행동을 이해하므로 그는 각 근육을 움직이는 방법을 말할 필요가 없으며 물체가 무엇인지 이해합니다. “칼”을 정의해야합니다. 그러나 그것이 당신의 이해의 한계입니다.
그의 지시를 문자 그대로 수행하고 그가 다시 시작하도록하십시오. 결과가 4 개의 PB & J 샌드위치가 아닐 때마다.
“일어 서서 주방으로 걸어 가세요.”
일어 서서 주방과 거실을 구분하는 벽으로 걸어갑니다. .
“Arg! 일어 서서 부엌 입구로 걸어 가야합니다.”
그렇습니다.
“찬장에서 빵 꺼내기”
찬장 문을 발톱으로 뽑아서 빵을 꺼낼 수 없습니다.
span>
“문 열어!”
오븐 문을여세요.
“찬장 문을여세요!”
그렇습니다.
“빵을 꺼내십시오.”
빵을 찬장에서 부엌 바닥으로 두드립니다 …