Java中开根号,你还记得吗?_java sqrt

一、了解根号运算

根号运算是一种数学运算,也称为开方运算。它的运算符号是 √ ̄,被称为根号符号,要将被开方的数包围。若 aⁿ=b,那么 abn 次方的 n 次方根或 ab1/n 次方。

n 次方的 n 写在符号 √ ̄ 的左边,n=2(平方根)时 n 可以忽略不写

x

\sqrt{x}

x

​,但若是立方根(三次方根)

x

3

\sqrt[3]{x}

3x

​、四次方根

x

4

\sqrt[4]{x}

4x

​ 等,是必须书写。

我们比较常见的也就是求一个数的平方根了,对于一个非负实数 x,它的平方根 y 是一个非负实数,使得 y 的平方等于 x,即 y²=x。例如,

4

\sqrt{4}

4

​=2,因为 2²=4

9

\sqrt{9}

9

​=3,因为 3²=9

需要注意的是,在实数范围内,负数没有实数平方根,因此,不能对负数进行开方运算,除非使用复数。

在计算中,可以利用计算器或数表等工具进行简便的根号运算,也可以通过手工计算,使用牛顿迭代法等算法进行近似计算。

二、Java开根号

1.Math.sqrt()开平方根

Java 中可以使用 Math 类的 sqrt 方法来实现平方根号运算。该方法的作用是返回一个数的平方根。
Math 类在 java.lang 包下,也是一个最终类,JDK1.0 就存在了。Math 类包含执行基本数值运算的方法,例如初等指数函数、对数函数、平方根函数和三角函数等。

public final class Math {}

Math 类中有 sqrt 方法,求平方根。以下是 sqrt() 方法源码:

/\*\*
 \* Returns the correctly rounded positive square root of a
 \* {@code double} value.
 \* Special cases:
 \* <ul><li>If the argument is NaN or less than zero, then the result
 \* is NaN.
 \* <li>If the argument is positive infinity, then the result is positive
 \* infinity.
 \* <li>If the argument is positive zero or negative zero, then the
 \* result is the same as the argument.</ul>
 \* Otherwise, the result is the {@code double} value closest to
 \* the true mathematical square root of the argument value.
 \*
 \* @param a a value.
 \* @return the positive square root of {@code a}.
 \* If the argument is NaN or less than zero, the result is NaN.
 \*/
public static double sqrt(double a) {
    return StrictMath.sqrt(a); // default impl. delegates to StrictMath
                               // Note that hardware sqrt instructions
                               // frequently can be directly used by JITs
                               // and should be much faster than doing
                               // Math.sqrt in software.
}

我们可以看到该方法是静态方法,也就是可以通过 Math.sqrt() 直接调用。需要传入双精度 double 类型数值,返回的也是 double 类型数值。方法体很简单直接调用 StrictMath.sqrt(a); 它这里解释说默认的 impl,委托给 StrictMath

例如,要计算 9 的平方根,可以使用以下代码:

double result = Math.sqrt(9);
System.out.println(result); // 输出结果为3.0

需要注意的是,sqrt 方法返回的是一个 double 类型的数值,如果需要精确计算,应该使用 BigDecimal 类进行计算。

我们在深究一下:

在 Java 中,根号运算被委托给了 Java 虚拟机中的 Math 库进行计算。Math 库中的 sqrt 方法采用了一些数学算法来求解开方运算,具体实现方式取决于底层的操作系统和硬件平台。

通常情况下,Java 虚拟机会使用硬件指令来进行数学计算,这样可以大大提高计算速度。对于无法使用硬件指令的情况,Java 虚拟机会使用软件实现的算法来进行计算。

无论使用哪种实现方式,Math 库的 sqrt 方法都会返回一个 double 类型的结果,表示被开方数的平方根。我们可以直接使用该结果进行后续的操作,例如计算平方根的倒数、平方等等。需要注意的是,sqrt 方法返回的结果并不是精确的,而是一个近似值,具体精度取决于底层实现的算法和硬件平台。如果需要进行高精度的计算,可以使用 BigDecimal 类来替代 Math 库中的方法。

2.Math.pow()开根号

在 Java 中,可以使用 Math 库的 pow 方法来进行求平方根的运算,但不是最有效的方法,因为 Math.pow() 通常使用指数函数来计算, 指数函数在近似计算时可能会导致精度误差。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值