在 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)解決,并且取決于性能和優(yōu)化。
開(kāi)始您的免費(fèi)軟件開(kāi)發(fā)課程
網(wǎng)絡(luò)開(kāi)發(fā)、編程語(yǔ)言、軟件測(cè)試及其他
平方根在 Java 中如何工作?
在 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)不斷重復(fù)該過(guò)程,直到該數(shù)量與其一半值相等。
- 通過(guò)這種方式,或者說(shuō)重復(fù)近似,可以非常準(zhǔn)確地獲得數(shù)字的平方根。
- 在下面的示例中,java中的do-while循環(huán)用于通過(guò)比較實(shí)際數(shù)字與其在while循環(huán)中的一半的差異來(lái)進(jìn)行迭代。逼近邏輯在 do 塊中執(zhí)行。
- 最后通過(guò)上述計(jì)算得到高精度的近似平方根值,并返回最終值。
- 該程序的效率取決于用于求數(shù)字平方根的方法。使用多種數(shù)學(xué)或數(shù)值方法來(lái)找出數(shù)字的平方根,其中效率和準(zhǔn)確性取決于所使用的方法及其復(fù)雜性。
- 算法的效率還取決于輸入數(shù)字的大小。如果是一個(gè)非常大的數(shù)字,那么程序的性能就會(huì)受到影響,需要重新考慮方法,一切都取決于需求和輸入。
- 這里使用的輸入數(shù)字的平方根是double數(shù)據(jù)類型,對(duì)于十進(jìn)制數(shù)也可以計(jì)算平方根值。
在 Java 中實(shí)現(xiàn)平方根的示例
數(shù)字的平方根已使用Java編程語(yǔ)言實(shí)現(xiàn)如下,輸出代碼已顯示在代碼下方。
- 此處使用的方法輸入?yún)?shù)為 double 數(shù)據(jù)類型,方法名稱為 findSquareRoot(),該方法返回平方根值,返回類型為 int 數(shù)據(jù)類型。
- 調(diào)用 findSquareRoot() 方法后,它首先創(chuàng)建一個(gè)新的臨時(shí)變量 num 來(lái)執(zhí)行一些操作,然后創(chuàng)建另一個(gè)變量“half”將值除以一半并與原始值進(jìn)行比較。
- 下一步有一個(gè) do-while 循環(huán),繼續(xù)逼近輸入值,直到獲得準(zhǔn)確的值。
- 它們確實(shí)包含 num 變量,該變量被分配一個(gè)值作為輸入值,并且通過(guò)將 num 變量除以 value 變量并將該值添加到 half 變量并除以整個(gè)值,用新值覆蓋 half 變量。
- 在 while 塊中,邏輯包含計(jì)算結(jié)果值近似值的半值與輸入值之間的差異,并將其值與“0”進(jìn)行比較。
- dos 塊中的這個(gè)過(guò)程會(huì)一直發(fā)生,直到 while 循環(huán)中的邏輯有效(即 true),通過(guò)使用否定運(yùn)算符和賦值運(yùn)算符(充當(dāng)比較器)評(píng)估變量的差異。
- 一旦 while 邏輯變?yōu)?false,findSquareRoot() 方法就會(huì)返回 half 變量的值,并將結(jié)果賦值給變量來(lái)使用。
- 可以使用靜態(tài)或非靜態(tài)修飾符在任何地方調(diào)用相同的方法。在這個(gè)程序中,該方法被定義為靜態(tài),因此它已在 main 方法中被調(diào)用。
- 整個(gè)功能和兩個(gè)方法都寫(xiě)在 SquareRoot 類中,它實(shí)際上封裝了平方根功能的行為。
- 輸入值可以按照 double 數(shù)據(jù)類型的最大容量傳遞,程序的復(fù)雜性再次取決于傳遞的輸入值。
Java 中數(shù)字平方根的代碼實(shí)現(xiàn)
代碼:
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í)間和空間復(fù)雜度。
以上是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脫衣機(jī)

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ù)變化僅限局部。
