경쟁 프로그래밍에서 1e-12를 사용하는 방법은 무엇입니까?


최상의 답변

부동 소수점 숫자는 컴퓨터 메모리에 정확하게 저장되지 않습니다. 이는 부동 소수점 숫자가 가장 가까운 이진 표현으로 근사되기 때문입니다. 따라서

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>

“문 열어!”

오븐 문을여세요.

“찬장 문을여세요!”

그렇습니다.

“빵을 꺼내십시오.”

빵을 찬장에서 부엌 바닥으로 두드립니다 …

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다