Java 中的 sqrt() 方法

Mehvish Ashiq 2023年10月12日
  1. 在 Java 中使用 sqrt() 方法求數的平方根
  2. 在 Java 中不使用 sqrt() 方法求數字的平方根
Java 中的 sqrt() 方法

本教程通過各種程式碼示例演示 Java 中的 sqrt() 方法。它還介紹了 Math.pow() 方法和一個自定義公式,我們可以使用該公式來查詢數字的平方根,而無需使用 sqrt() 方法。

在 Java 中使用 sqrt() 方法求數的平方根

java.lang.Math 包包含 sqrt() 方法。它返回型別為 double 的數字的平方根,並作為引數傳遞給 sqrt() 方法。

如果傳遞的引數是 NaN 或負數,則返回 NaN

如果我們將正無窮大作為引數傳遞,sqrt() 函式會輸出正無窮大。而且,如果 sqrt() 方法得到負數或正數零,結果將與引數相同。

讓我們使用各種示例程式碼來探索所有場景。

示例程式碼(如果傳遞的引數是 double 型別的正數):

import java.lang.Math;

public class calSquareRoot {
  public static void main(String args[]) {
    double number = 25;
    double sqrt = Math.sqrt(number);
    System.out.println("The square root of " + number + " is " + sqrt);
  }
}

輸出:

The square root of 25.0 is 5.0

此程式碼示例表明我們必須匯入 java.lang.Math 包才能在 Java 程式中使用 sqrt() 方法。在 main 方法中,我們宣告並初始化一個 double 型別的變數 number,其值為 25

然後,我們將此 number 傳遞給 sqrt() 方法並將返回值儲存在 sqrt 變數中,該變數在 System.out.println 中進一步用於列印指定 number 的正方形根。

對於本節中所有即將出現的示例,該過程將保持不變,但我們將更新 number 的值以嘗試不同的情況。

示例程式碼(如果傳遞的引數是 NaN):

import java.lang.Math;

public class calSquareRoot {
  public static void main(String args[]) {
    double number = Double.NaN;
    double sqrt = Math.sqrt(number);
    System.out.println("The square root of " + number + " is " + sqrt);
  }
}

輸出:

The square root of NaN is NaN

示例程式碼(如果傳遞的引數是負數):

import java.lang.Math;

public class calSquareRoot {
  public static void main(String args[]) {
    double number = -5;
    double sqrt = Math.sqrt(number);
    System.out.println("The square root of " + number + " is " + sqrt);
  }
}

輸出:

The square root of -5.0 is NaN

示例程式碼(如果傳遞的引數是正無窮大):

import java.lang.Math;

public class calSquareRoot {
  public static void main(String args[]) {
    double number = Double.POSITIVE_INFINITY;
    double sqrt = Math.sqrt(number);
    System.out.println("The square root of " + number + " is " + sqrt);
  }
}

輸出:

The square root of Infinity is Infinity

示例程式碼(如果傳遞的引數是負零或正零):

import java.lang.Math;

public class calSquareRoot {
  public static void main(String args[]) {
    double number = -0;
    double sqrt = Math.sqrt(number);
    System.out.println("The square root of " + number + " is " + sqrt);

    number = 0;
    sqrt = Math.sqrt(number);
    System.out.println("The square root of " + number + " is " + sqrt);
  }
}

輸出:

The square root of 0.0 is 0.0
The square root of 0.0 is 0.0

我們已經涵蓋了本節開頭討論的所有可能的示例。是時候探索其他不使用 sqrt() 方法來求平方根的方法了。

在 Java 中不使用 sqrt() 方法求數字的平方根

在本節中,我們將介紹 Math.pow() 方法和如下自定義公式。

$$ \sqrt{n+1} = \frac {(\sqrt{n} + \frac {number} {\sqrt {n}})} {2.0} $$

我們將確保這兩種方法都滿足下面給出的 sqrt() 方法的規則。

  1. 返回正數的平方根。
  2. 如果傳遞了 NaN 或負數,則返回 NaN
  3. 如果負零或正零返回相同的傳遞數。
  4. 如果得到 Double.POSITIVE_INFINITY,則返回 Infinity

在 Java 中使用 Math.pow() 方法求數的平方根

示例程式碼:

public class calSquareRoot {
  public static void main(String[] args) {
    double positiveNumber = 25;
    double negativeNumber = -25;
    double nan = Double.NaN;
    double postiveInfinity = Double.POSITIVE_INFINITY;
    double positiveZero = 0;
    double negativeZero = -0;
    double sqrt = 0;

    sqrt = Math.pow(positiveNumber, 0.5);
    System.out.println("The Square root of  " + positiveNumber + "  =  " + sqrt);

    sqrt = Math.pow(nan, 0.5);
    System.out.println("The Square root of  " + nan + "  =  " + sqrt);

    sqrt = Math.pow(negativeNumber, 0.5);
    System.out.println("The Square root of  " + negativeNumber + "  =  " + sqrt);

    sqrt = Math.pow(postiveInfinity, 0.5);
    System.out.println("The Square root of  " + postiveInfinity + "  =  " + sqrt);

    sqrt = Math.pow(positiveZero, 0.5);
    System.out.println("The Square root of  " + positiveZero + "  =  " + sqrt);

    sqrt = Math.pow(negativeZero, 0.5);
    System.out.println("The Square root of  " + negativeZero + "  =  " + sqrt);
  }
}

輸出:

The Square root of  25.0  =  5.0
The Square root of  NaN  =  NaN
The Square root of  -25.0  =  NaN
The Square root of  Infinity  =  Infinity
The Square root of  0.0  =  0.0
The Square root of  0.0  =  0.0

正如我們所知,√number = number½在數學上是被認可的。所以,我們可以使用冪函式(Math.pow())來計算冪,也就是這裡第一個引數的值提高到 0.5。

它是給定數字的平方根。

在 Java 中使用自定義公式方法查詢數字的平方根

示例程式碼:

public class calSquareRoot {
  public static double squareRoot(double number) {
    if (number < 0 || Double.isNaN(number))
      return Double.NaN;

    else if (number == Double.POSITIVE_INFINITY)
      return Double.POSITIVE_INFINITY;

    else if (number == 0 || number == -0)
      return number;

    else if (number > 0) {
      double temp;
      double sqrt = number / 2;

      do {
        temp = sqrt;
        sqrt = (temp + (number / temp)) / 2;
      } while ((temp - sqrt) != 0);

      return sqrt;
    }

    else {
      return -1;
    }
  }

  public static void main(String[] args) {
    double positiveNumber = 25;
    double negativeNumber = -25;
    double nan = Double.NaN;
    double postiveInfinity = Double.POSITIVE_INFINITY;
    double positiveZero = 0;
    double negativeZero = -0;
    double sqrt = 0;

    sqrt = squareRoot(positiveNumber);
    System.out.println("The Square root of  " + positiveNumber + "  =  " + sqrt);

    sqrt = squareRoot(nan);
    System.out.println("The Square root of  " + nan + "  =  " + sqrt);

    sqrt = squareRoot(negativeNumber);
    System.out.println("The Square root of  " + negativeNumber + "  =  " + sqrt);

    sqrt = squareRoot(postiveInfinity);
    System.out.println("The Square root of  " + postiveInfinity + "  =  " + sqrt);

    sqrt = squareRoot(positiveZero);
    System.out.println("The Square root of  " + positiveZero + "  =  " + sqrt);

    sqrt = squareRoot(negativeZero);
    System.out.println("The Square root of  " + negativeZero + "  =  " + sqrt);
  }
}

輸出:

The Square root of  25.0  =  5.0
The Square root of  NaN  =  NaN
The Square root of  -25.0  =  NaN
The Square root of  Infinity  =  Infinity
The Square root of  0.0  =  0.0
The Square root of  0.0  =  0.0

在這裡,我們使用下面公式。

$$
\sqrt{n+1} = \frac {(\sqrt{n} + \frac {number} {\sqrt {n}})} {2.0}
$$

main 函式中,我們將不同的值傳遞給 squareRoot() 方法,其中我們有 if-else 條件來檢查規則。

我們根據給定的求平方根的規則返回值,如果給定的數字大於 0,則執行給定的公式。請記住,第一個平方根數必須是 inputNumber/2

作者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - Java Method