前一段时间领导出了一道算法题(找出一个数的平方根,精确到小数点后两位,不使用函数库),对此一直耿耿于怀,始终觉得自己的答案是有问题的,但是暂时没有想到其他好的办法。
我是先求出最接近这个数的一个能够整除的平方根,比如说1的平方根是1,2的最接近的平方根也是1,3的最接近平方根也是1,而5的最接近的平方跟是2,那么以2为基数,每次叠加0.01,加入说root是平方根,那么找出root 乘以root,然后乘积比该数大0.001的数。具体算法见以下代码:
import java.math.BigDecimal; import java.math.RoundingMode; /** * 找出一个数的平方根,精确到小数点后两位,不使用函数库. * * @author qinge * */ public class Square { public static void main(String[] args) { for (int num = 1; num <= 1000; num++) { System.out.print(num + "的函数平方根:" + Math.sqrt(num)); double root = findSmallRoot(num); System.out.print(" 小数点前一位是:" + root); while (true) { double product = root * root; if (product == num) { System.out.print(" 计算得出平方根是:" + root + "\n"); break; } else if (product > num) {// 此处算法有遗漏 if (product - num > 0.001) { System.out.print(" 计算得出平方根是:" + root + "\n"); break; } } // 用加0.01进行控制 root = root + 0.01; // 对double类型进行精度控制 root = BigDecimal.valueOf(root).setScale(2, RoundingMode.HALF_UP).doubleValue(); } } } /** * 找出num的平方根的小数点前面的数字 * * @param num * @return */ public static int findSmallRoot(int num) { // 遍历平方根的基数,基数的乘机必然会小于等于num for (int i = 1; i <= num && i * i <= num; i++) { // 找出基数则返回 if (i * i == num) { return i; } } // 找num-1 return findSmallRoot(num - 1); } }
相信一些大牛们一定有自己更神奇的算法,那么就贴出来吧!学习膜拜中...
相关推荐
@Power 求一个数的幂值 @Prompt 显示一个对话框,并根据用户的操作返回一个文本值。@Prompt 用来给用户提示信息,并根据用户的输入确定以后的操作过程 @ProperCase 将字符串中的单词转换成字首大写的形式 @Random ...
isFinite 方法 返回一个 Boolean 值,表明某个给定的数是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个数)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在...
本书侧重于函数的实战应用,共分12章,前10章分别介绍了数学函数、统计函数、日期和时间函数、文本函数、逻辑函数、查找和引用函数、财务函数、信息函数以及数据库和三角函数在实战中的应用;第11 章介绍了函数与...
isFinite 方法 返回一个 Boolean 值,表明某个给定的数是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个数)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在...
isFinite 方法 返回一个 Boolean 值,表明某个给定的数是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个数)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在...
Replace 函数 返回一个字符串,其中某个指定的子串被另一个子串替换,替换的次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现的正文。 RGB 函数 返回表示 RGB 颜色值的数。 Right 函数 返回字符串最...
Replace 函数 返回一个字符串,其中某个指定的子串被另一个子串替换,替换的次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现的正文。 RGB 函数 返回表示 RGB 颜色值的数。 Right 函数 返回字符串最...
Replace 函数 返回一个字符串,其中某个指定的子串被另一个子串替换,替换的次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现的正文。 RGB 函数 返回表示 RGB 颜色值的数。 Right 函数 返回字符串最...
Replace 函数 返回一个字符串,其中某个指定的子串被另一个子串替换,替换的次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现的正文。 RGB 函数 返回表示 RGB 颜色值的数。 Right 函数 返回字符串最...
Replace 函数 返回一个字符串,其中某个指定的子串被另一个子串替换,替换的次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现的正文。 RGB 函数 返回表示 RGB 颜色值的数。 Right 函数 返回字符串最...
对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。因此,如何求得满足一定精度要求的方程的近似根也就成为了广大科技工作者迫切需要解决的问题。...
2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 数据的增、删、改 3.1 数据的插入 3.1.1 简单的INSERT语句 3.1.2 简化的INSERT语句 3.1.3 非空约束对数据插入的影响 ...
2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 数据的增、删、改 3.1 数据的插入 3.1.1 简单的INSERT语句 3.1.2 简化的INSERT语句 3.1.3 非空约束对数据插入的影响 ...
2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 数据的增、删、改 3.1 数据的插入 3.1.1 简单的INSERT语句 3.1.2 简化的INSERT语句 3.1.3 非空约束对数据插入的影响 ...
2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 数据的增、删、改 3.1 数据的插入 3.1.1 简单的INSERT语句 3.1.2 简化的INSERT语句 3.1.3 非空约束对数据插入的影响 ...
对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。因此,如何求得满足一定精度要求的方程的近似根也就成为了广大科技工作者迫切需要解决的问题。...
对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。因此,如何求得满足一定精度要求的方程的近似根也就成为了广大科技工作者迫切需要解决的问题。...
对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。因此,如何求得满足一定精度要求的方程的近似根也就成为了广大科技工作者迫切需要解决的问题。...
2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 数据的增、删、改 3.1 数据的插入 3.1.1 简单的INSERT语句 3.1.2 简化的INSERT语句 3.1.3 非空约束对数据插入的影响 ...
如果操作数是一个常数,它不需要用括号括起,并且与运算符之间不需要空格分隔,如: sqr2 = 1.41421 cos0 = 1 当操作数是表达式时,需要用括号括起,以划分优先级: sqr(1 + 2) = 1.73205 当操作数是一个内置...