在 Java 中,可以使用 Math 類別中的 sqrt() 方法(如 Java 函式庫(kù)中的 Math.sqrt() )來(lái)計(jì)算數(shù)字的平方根。有多種方法可以求出數(shù)字的平方根。求數(shù)字平方根的標(biāo)準(zhǔn)或常規(guī)方法是長(zhǎng)除法。然而,當(dāng)數(shù)量很大並且需要大量時(shí)間來(lái)完成該過(guò)程時(shí),該方法很難應(yīng)用。這個(gè)問(wèn)題也可以透過(guò)使用幾種可用數(shù)值方法中的牛頓拉夫森方法來(lái)解決,並且取決於性能和最佳化。
開(kāi)始您的免費(fèi)軟體開(kāi)發(fā)課程
網(wǎng)頁(yè)開(kāi)發(fā)、程式語(yǔ)言、軟體測(cè)試及其他
平方根在 Java 中如何運(yùn)作?
在 Java 中,可以使用基本迭代循環(huán),使用如下所示的一系列步驟有效地計(jì)算數(shù)字的平方根。
- 求一個(gè)數(shù)的平方根所涉及的主要原理是高效且有效地進(jìn)行乘法、除法、加法和減法等基本數(shù)學(xué)運(yùn)算。
- 首先透過(guò)執(zhí)行多個(gè)數(shù)學(xué)運(yùn)算來(lái)操縱輸入數(shù)字,以確定近似的平方根值。
- 此處使用的方法中的輸入元素除以其實(shí)際數(shù)量的一半,並使用 while 循環(huán)或某種迭代循環(huán)不斷重複該過(guò)程,直到該數(shù)量與其一半值相等。
- 透過(guò)這種方式,或者說(shuō)重複近似,可以非常準(zhǔn)確地得到數(shù)字的平方根。
- 在下面的範(fàn)例中,java中的do-while循環(huán)用於透過(guò)比較實(shí)際數(shù)字與其在while循環(huán)中的一半的差異來(lái)進(jìn)行迭代。逼近邏輯在 do 區(qū)塊中執(zhí)行。
- 最後經(jīng)由上述計(jì)算得到高精度的近似平方根值,並傳回最終值。
- 程式的效率取決於用來(lái)求數(shù)字平方根的方法。使用多種數(shù)學(xué)或數(shù)值方法來(lái)找出數(shù)字的平方根,其中效率和準(zhǔn)確性取決於所使用的方法及其複雜性。
- 演算法的效率也取決於輸入數(shù)字的大小。如果是一個(gè)非常大的數(shù)字,那麼程式的效能就會(huì)受到影響,需要重新考慮方法,一切都取決於需求和輸入。
- 這裡使用的輸入數(shù)字的平方根是double資料型,對(duì)於十進(jìn)制數(shù)也可以計(jì)算平方根值。
在 Java 中實(shí)作平方根的範(fàn)例
數(shù)字的平方根已使用Java程式語(yǔ)言實(shí)作如下,輸出程式碼已顯示在程式碼下方。
- 此處使用的方法輸入?yún)?shù)為 double 資料型,方法名稱為 findSquareRoot(),此方法傳回平方根值,傳回類型為 int 資料型別。
- 呼叫 findSquareRoot() 方法後,它首先建立一個(gè)新的臨時(shí)變數(shù) num 來(lái)執(zhí)行一些操作,然後建立另一個(gè)變數(shù)「half」將值除以一半並與原始值進(jìn)行比較。
- 下一步有一個(gè) do-while 循環(huán),繼續(xù)逼近輸入值,直到獲得準(zhǔn)確的值。
- 它們確實(shí)包含 num 變量,該變量被分配一個(gè)值作為輸入值,並且通過(guò)將 num 變量除以 value 變量並將該值添加到 half 變量並除以整個(gè)值,用新值覆蓋 half 變量。
- 在 while 區(qū)塊中,邏輯包含計(jì)算結(jié)果值近似值的半值與輸入值之間的差異,並將其值與「0」進(jìn)行比較。
- dos 區(qū)塊中的這個(gè)過(guò)程會(huì)一直發(fā)生,直到 while 迴圈中的邏輯有效(即 true),透過(guò)使用否定運(yùn)算子和賦值運(yùn)算子(充當(dāng)比較器)來(lái)評(píng)估變數(shù)的差異。
- 一旦 while 邏輯變成 false,findSquareRoot() 方法就會(huì)傳回 half 變數(shù)的值,並將結(jié)果賦值給變數(shù)來(lái)使用。
- 可以使用靜態(tài)或非靜態(tài)修飾符在任何地方呼叫相同的方法。在這個(gè)程式中,該方法被定義為靜態(tài),因此它已在 main 方法中被呼叫。
- 整個(gè)功能和兩個(gè)方法都寫(xiě)在 SquareRoot 類別中,它實(shí)際上封裝了平方根功能的行為。
- 輸入值可以按照 double 資料類型的最大容量傳遞,程式的複雜度再次取決於傳遞的輸入值。
Java 中數(shù)字平方根的程式碼實(shí)作
代碼:
public class SquareRoot { public static void main(String[] args) { System.out.print(findSquareRoot(2)); } /* * Class to find square root of number */ public static double findSquareRoot(int value) { double num; double half = (double) value / 2; do { num = half; half = (num + (value / num)) / 2; } while ((num - half) != 0); return half; } }
輸出:
1.414213562373095
結(jié)論
上面實(shí)現(xiàn)的數(shù)字的平方根是一種有多種可能性的方法,並且可以根據(jù)輸入數(shù)字的要求和大小來(lái)接近任何方法。在繼續(xù)執(zhí)行特定方法之前,必須分析程式的時(shí)間和空間複雜度。
以上是Java 中的平方根的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

Laravel支持使用原生SQL查詢,但應(yīng)優(yōu)先使用參數(shù)綁定以確保安全;1.使用DB::select()執(zhí)行帶參數(shù)綁定的SELECT查詢,防止SQL注入;2.使用DB::update()執(zhí)行UPDATE操作並返回影響行數(shù);3.使用DB::insert()插入數(shù)據(jù);4.使用DB::delete()刪除數(shù)據(jù);5.使用DB::statement()執(zhí)行如CREATE、ALTER等無(wú)結(jié)果集的SQL語(yǔ)句;6.推薦在QueryBuilder中使用whereRaw、selectRaw等方法結(jié)合原生表達(dá)式以提升安

使用JUnit5和Mockito能有效隔離依賴進(jìn)行單元測(cè)試,1.通過(guò)@Mock創(chuàng)建模擬對(duì)象,@InjectMocks注入被測(cè)實(shí)例,@ExtendWith啟用Mockito擴(kuò)展;2.使用when().thenReturn()定義模擬行為,verify()驗(yàn)證方法調(diào)用次數(shù)與參數(shù);3.可模擬異常場(chǎng)景並驗(yàn)證錯(cuò)誤處理;4.推薦構(gòu)造函數(shù)注入、避免過(guò)度模擬、保持測(cè)試原子性;5.使用assertAll()合併斷言,@Nested組織測(cè)試場(chǎng)景,從而提升測(cè)試可維護(hù)性和可靠性。

Go泛型從1.18開(kāi)始支持,用於編寫(xiě)類型安全的通用代碼。 1.泛型函數(shù)PrintSlice[Tany](s[]T)可打印任意類型切片,如[]int或[]string。 2.通過(guò)類型約束Number限制T為int、float等數(shù)字類型,實(shí)現(xiàn)Sum[TNumber](slice[]T)T安全求和。 3.泛型結(jié)構(gòu)體typeBox[Tany]struct{ValueT}可封裝任意類型值,配合NewBox[Tany](vT)*Box[T]構(gòu)造函數(shù)使用。 4.為Box[T]添加Set(vT)和Get()T方法,無(wú)需

table-layout:fixed會(huì)強(qiáng)製表格列寬由第一行單元格寬度決定,避免內(nèi)容影響佈局。 1.設(shè)置table-layout:fixed並指定表格寬度;2.為第一行th/td設(shè)置具體列寬比例;3.配合white-space:nowrap、overflow:hidden和text-overflow:ellipsis控製文本溢出;4.適用於後臺(tái)管理、數(shù)據(jù)報(bào)表等需穩(wěn)定佈局和高性能渲染的場(chǎng)景,能有效防止佈局抖動(dòng)並提升渲染效率。

json.loads()用於將JSON字符串解析為Python數(shù)據(jù)結(jié)構(gòu),1.輸入必須是雙引號(hào)包裹的字符串且布爾值為true/false;2.支持null→None、對(duì)象→dict、數(shù)組→list等自動(dòng)轉(zhuǎn)換;3.常用於處理API返回的JSON字符串,如response_string經(jīng)json.loads()解析後可直接訪問(wèn)嵌套數(shù)據(jù),使用時(shí)需確保JSON格式正確,否則會(huì)拋出異常。

Choosetheappropriateindextypebasedonusecase,suchassinglefield,compound,multikey,text,geospatial,orTTLindexes.2.ApplytheESRrulewhencreatingcompoundindexesbyorderingfieldsasequality,sort,thenrange.3.Designindexestosupportcoveredqueriesbyincludingallque

Maven是Java項(xiàng)目管理和構(gòu)建的標(biāo)準(zhǔn)工具,答案在於它通過(guò)pom.xml實(shí)現(xiàn)項(xiàng)目結(jié)構(gòu)標(biāo)準(zhǔn)化、依賴管理、構(gòu)建生命週期自動(dòng)化和插件擴(kuò)展;1.使用pom.xml定義groupId、artifactId、version和dependencies;2.掌握核心命令如mvnclean、compile、test、package、install和deploy;3.利用dependencyManagement和exclusions管理依賴版本與衝突;4.通過(guò)多模塊項(xiàng)目結(jié)構(gòu)組織大型應(yīng)用並由父POM統(tǒng)一管理;5.配

Python中函數(shù)傳參是“傳遞對(duì)象引用”,即1.對(duì)於可變對(duì)象(如列表、字典),函數(shù)內(nèi)進(jìn)行原地修改(如append、賦值切片)會(huì)直接影響原對(duì)象;2.對(duì)於不可變對(duì)象(如整數(shù)、字符串),函數(shù)內(nèi)無(wú)法改變?cè)瓕?duì)象,重新賦值只會(huì)創(chuàng)建新對(duì)象;3.參數(shù)傳遞的是引用的副本,若在函數(shù)內(nèi)重新綁定變量(如lst=[...]),則斷開(kāi)與原對(duì)象的連接,不影響外部變量。因此,修改可變對(duì)象會(huì)影響原數(shù)據(jù),而不可變對(duì)象和重新賦值則不會(huì),這解釋了為何列表在函數(shù)內(nèi)修改後外部可見(jiàn),而整數(shù)變化僅限局部。
