===========================================================
#import
int main(int argc, const char * argv[]) {
float x_n, S;
int n;
x_n = 1.0;
S = 2.0;
n = 0;
for (n = 0; n <= 300; n = n + 1) {
x_n = (1 / 2) * (x_n + (S / x_n));
}
printf("%f", x_n);
return NSApplicationMain(argc, argv);
}
===========================================================
이라고 작성을 하고 실행을 시키니
nan
이라는 심플한 결과물을 내뱉음
????
왜??? 어째서??? 뭣땀시???
조낸 고민하다가
(1 / 2)부분을 0.5로 바꿔니 정상적으로 답을 뱉어냄...
왜??? 어째서??? 뭣땀시???
하도 이상해서 계산하는 부분에 브레이크포인트 걸어두고 다시 돌려봄...
===========================================================
S = (float) 2
x_n = (float) 1
n = (int) 0
===========================================================
S = (float) 2
x_n = (float) 0
n = (int) 1
===========================================================
응???
x_n = 0 ???
왜??? 어째서??? 뭣땀시???
===========================================================
S = (float) 2
x_n = (float) NaN
n = (int) 2
===========================================================
???
근데...
이 똑같은 내용을 Swift로 옮겨서 돌려보면...
===========================================================
import Cocoa
var x_n, S: Float64
var n: Int
x_n = 1
S = 2
for(n = 1; n <= 300; n = n + 1){
x_n = (1 / 2) * (x_n + (S / x_n))
}
println(x_n)
===========================================================
"1.41421356237309"라고 결과 값이 나옴...
아~~ 왜??? 어째서??? 뭣땀시???
에서 ( 1 / 2 ) 는 인트형으로 계산되어 0 값이 나올겁니다.
1 이나 2 혹은 둘다 float 형으로 해야 원하는 값이 나올꺼에요