public float sqrt(float f, int p), precision是表示小数点后位数(2就要两位一致)
p is the number of digits after the decimal point has to be right
Solution:
判断数据是否符合精确度,就用两个数都乘以10^p,再取整比较是否相等。比如p=2, f=0.64, curRes = 0.639就不行因为都乘以100以后取整是64, 和63不相等。 如果curRes = 0.645就没问题。
至于curRes,我就先二分法取到整数范围,比如8开平方根在(2,3)范围,再再(2,3)范围内二分,判断精确度。要注意的是,(2,3)大于1和(0,1)小于一两种范围二分的时候方向不同。大于一越平方越大,小于一越平方越小!