标签:实现 double squareRoot number sqrt System int 算法 out
1 package com.company; 2 3 4 import org.junit.Test; 5 6 public class Lesson3_2 { 7 8 /** 9 * @Description: 计算大于1的正整数之平方根 10 * @param n-待求的数, deltaThreshold-误差的阈值, maxTry-二分查找的最大次数 11 * @return double-平方根的解 12 */ 13 public static double getSqureRoot(int n, double deltaThreshold, int maxTry) { 14 15 if (n <= 1) { 16 return -1.0; 17 } 18 19 double min = 1.0, max = (double)n; 20 for (int i = 0; i < maxTry; i++) { 21 double middle = (min + max) / 2; 22 double square = middle * middle; 23 double delta = Math.abs((square / n) - 1); 24 if (delta <= deltaThreshold) { 25 return middle; 26 } else { 27 if (square > n) { 28 max = middle; 29 } else { 30 min = middle; 31 } 32 } 33 } 34 35 return -2.0; 36 37 } 38 39 @Test 40 public void Test1() 41 { 42 int number = 10; 43 double squareRoot = Lesson3_2.getSqureRoot(number, 0.000001, 10000); 44 if (squareRoot == -1.0) { 45 System.out.println("请输入大于1的整数"); 46 } else if (squareRoot == -2.0) { 47 System.out.println("未能找到解"); 48 } else { 49 System.out.println(String.format("%d的平方根是%f", number, squareRoot)); 50 } 51 } 52 }
标签:实现,double,squareRoot,number,sqrt,System,int,算法,out 来源: https://www.cnblogs.com/xhu218/p/16267346.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。