sqrt 함수를 이용하지 않은 정확한 소숫점 계산..
돌삥
질문 제목 : sqrt 함수를 이용하지 않았을때 정확한 소숫점 계산.질문 요약 :세변의 길이가a = 루트200 ,b = 10 ,c = 10 인 삼각형은 직각이등변 삼각형입니다.
당연히 sqrt를 이용해서 a를 구해주면if(a*a == b*b + c*c)의 조건에 성립합니다.
하지만 제가짠 코드로는 else if(a*a b*b + c*c)이쪽 조건에 성립하더라고요.
소숫점이 정확하게 계산이 안된 것이죠! 더 정확히 소숫점 계산을 할 수 있도록조언을 해주세요!질문 내용 :
코드는..
for(ii=0 ; ii -1 ; ii++){
if(n2 0.000001){
n2=1;
break;
}
else if((sqr1 + ii*n2)*(sqr1 + ii*n2) = line1 && line1 (sqr1 + (ii+1)*n2)*(sqr1 + (ii+1)*n2)){
sqr1 = sqr1 + ii*n2;
n2 = n2/10;
ii=-1;
continue;
}
}
1×1 루트2 2×2
1.4×1.4=1.96 루트2 1.5×1.5=2.25
1.41×1.41=1.9881 루트2 1.42×1.42=1.0164
1.414×1.414=1.999396 1.415×1.415=2.002225
이 방법을 이용하여 루트값을 구해준 코드입니다..
-
찬슬
그러게요 ㅠㅠ; 그런 오차들때문에 고생하고 있답니다 ㅠㅠ;
-
남은
자료형 자체가 어느정도 오차가 있습니다.