猿问

一个求平方根的写的方法,里面好多代码不懂。望大神讲解一下

//计算平方根
	public static double sqrt(double c) {
		if (c < 0) return Double.NaN;
		double err = 1e -15;
		double t = c;
		while (Math.abs(t - c/t) >err *t )
			t = (c/t + t) /2.0;
		return t;
		    
	}

在这里面(1e -15),实在看不懂这个“le”是一个什么变量。试了好几个也不懂。还有while那段循环看不懂。望解答一下代码

编程人生纪
浏览 1853回答 2
2回答

精慕门9254224

1e-15是指数形式表达浮点数,代表10的-15次方是double类型的正数最小值,while 中math .abs 代表取绝对值,while 循环内部的代码就是开方的算法,不过浮点数计算会有小数溢出,一般精度不够,会丢失精度!

topband

1e -15;代表10的-15次方。这个求平方根的算法为牛顿法。是常用的一种算法之一。如果不专门学习算法的话,不需要去抠这些细节的。只需要知道,这是一个功能函数,作用是求平方根。另外,如果对算法感兴趣,可以加入学校的acm社团,成为一个acmer,顺便膜拜下楼教主。
随时随地看视频慕课网APP

相关分类

Java
我要回答