这样的面试题是否有意义?
資深大佬 : lewis89 59
一个算法题
要求用二分查找实现
public double sqrt(int num){ //实现 }
/** * 二分查找 求平方根 * @param num * @return */ public double sqrt(int num) { //这个题应该要看精度 如果没有特殊的精度要求 double low = 0; double high = num; while (low < high) { double mid = (low + high) / 2; if ((mid * mid) > num) { high = mid; } else if ((mid * mid) < num) { low = mid; } else { // mid * mid == num 因为我做这个题目时候会觉得这个条件可能永远不会成立 // 但是 double 类型存在一个精度问题 // 当 mid 的精度到达一定位置时候 mid * mid 会得到一个整数 其刚好是 num 的近似平方根 return mid; } } return -1; }
这个题目 当时是没有精度要求的,我根本就想不到 两个 double 相乘,在一定精度情况下居然能够得到一个整数, 当然我理解其中的原理,由于二进制长度限制,有限的位置不可能表示无限精度的小数,所以其乘法运算可能会出现溢出的情况,然后乘法运算溢出后的结果刚刚是一个整数。
大佬有話說 (24)