标签: c floating-point square-root
我在C中有这个小程序,它使用递归函数(使用while循环实现)计算正整数x的平方根N。如果我使用此计算x:
x
N
x = (1/2)*(x + N/x) //x0 = 1.0
然后x继续增长到inf,然后是nan。但是,如果我使用它:
x = (x + N/x)/2 //x0 = 1.0
它工作正常,为什么?谢谢。
答案 0 :(得分:6)
1/2执行整数除法,结果为0,将操作数更改为double,例如:
1/2
0
double
1.0/2