AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

Java中的浮點型與雙精度型(Float vs Double)

來源: 責(zé)編: 時間:2023-12-11 09:25:56 246觀看
導(dǎo)讀編程語言中的數(shù)據(jù)類型對數(shù)據(jù)進行分類并表示特定類別中的數(shù)據(jù),該類別確定可以存儲在變量中的值的類型。不同的編程語言提供不同的,包括整數(shù)、浮點數(shù)、字符、字符串和布爾值。在本篇文章中,我們將重點關(guān)注 float 和 double

Q9j28資訊網(wǎng)——每日最新資訊28at.com

編程語言中的數(shù)據(jù)類型對數(shù)據(jù)進行分類并表示特定類別中的數(shù)據(jù),該類別確定可以存儲在變量中的值的類型。不同的編程語言提供不同的,包括整數(shù)、浮點數(shù)、字符、字符串和布爾值。Q9j28資訊網(wǎng)——每日最新資訊28at.com

在本篇文章中,我們將重點關(guān)注 float 和 double 之間的差異。Q9j28資訊網(wǎng)——每日最新資訊28at.com

float 和 double 之間的區(qū)別在于它們的精度。Float 是 32 位單精度浮點類型,而 double 是 64 位雙精度浮點類型。Q9j28資訊網(wǎng)——每日最新資訊28at.com

然而,關(guān)于這些數(shù)據(jù)類型還有更多需要了解,例如它們是如何存儲的?他們的用例是什么?更重要的是,Java 中的 float 和 double 有什么區(qū)別嗎?Q9j28資訊網(wǎng)——每日最新資訊28at.com

浮點數(shù)的兩種表示形式

二進制系統(tǒng)中的數(shù)字由三部分組成:Q9j28資訊網(wǎng)——每日最新資訊28at.com

  • 符號:表示數(shù)字是正數(shù)還是負數(shù)。通常用一個位來表示,00表示積極和11表示負數(shù)。
  • 整數(shù):表示小數(shù)點前出現(xiàn)的整數(shù)。
  • 分數(shù):表示小數(shù)點后出現(xiàn)的分數(shù)。

Q9j28資訊網(wǎng)——每日最新資訊28at.com

二進制系統(tǒng)中數(shù)字的表示Q9j28資訊網(wǎng)——每日最新資訊28at.com

二進制數(shù)的定點表示對整數(shù)和小數(shù)部分使用固定位數(shù)。雖然方便,但定點表示的精度有限,并且取決于分配給小數(shù)部分的位數(shù)。Q9j28資訊網(wǎng)——每日最新資訊28at.com

以一個16位的3.1416為例,我們用7位表示整數(shù),用8位表示小數(shù)點后的小數(shù)。剩余的1位保留給符號位。Q9j28資訊網(wǎng)——每日最新資訊28at.com

  • 符號位將是00因為數(shù)字是正數(shù)。
  • 整數(shù)3轉(zhuǎn)換為二進制為00000110000011。
  • 分數(shù)0.1416轉(zhuǎn)換為二進制為0010010000100100。

另一種方法可以是固定數(shù)字的位數(shù)和另一組位以指示小數(shù)點在該數(shù)字內(nèi)的位置。這稱為浮點表示。我們將沒有小數(shù)點的數(shù)字稱為尾數(shù),將小數(shù)點的位置稱為指數(shù)。浮點表示對于數(shù)值范圍較大且精度要求較高的應(yīng)用非常有利。Q9j28資訊網(wǎng)——每日最新資訊28at.com

Q9j28資訊網(wǎng)——每日最新資訊28at.com

浮點表示Q9j28資訊網(wǎng)——每日最新資訊28at.com

我們繼續(xù)前面的例子,看看如何3.1416以 16 位浮點表示形式表示。考慮到10尾數(shù)位和5對于指數(shù),符號位將為s=0因為數(shù)字是正數(shù)。對于尾數(shù),我們從相當(dāng)于的二進制開始3.1416=11.00100100,可以寫成11.00100100×2^1。現(xiàn)在尾數(shù)將是1100100100,指數(shù)是二進制表示1=00001。Q9j28資訊網(wǎng)——每日最新資訊28at.com

Java 中的float與double

理解了浮點表示的概念后,區(qū)分 float 和 double 就變得很容易了。正如前面所述,float 和 double 之間的主要區(qū)別在于它們的精度。Q9j28資訊網(wǎng)——每日最新資訊28at.com

根據(jù) IEEE 754 標(biāo)準(zhǔn),float是 32 位二進制格式,而double是 64 位二進制格式。下表總結(jié)了指數(shù)和尾數(shù)所用位數(shù)的差異:Q9j28資訊網(wǎng)——每日最新資訊28at.com


Q9j28資訊網(wǎng)——每日最新資訊28at.com

FloatQ9j28資訊網(wǎng)——每日最新資訊28at.com

DoubleQ9j28資訊網(wǎng)——每日最新資訊28at.com

符號Q9j28資訊網(wǎng)——每日最新資訊28at.com

1Q9j28資訊網(wǎng)——每日最新資訊28at.com

1Q9j28資訊網(wǎng)——每日最新資訊28at.com

指數(shù)Q9j28資訊網(wǎng)——每日最新資訊28at.com

8Q9j28資訊網(wǎng)——每日最新資訊28at.com

11Q9j28資訊網(wǎng)——每日最新資訊28at.com

尾數(shù)Q9j28資訊網(wǎng)——每日最新資訊28at.com

23Q9j28資訊網(wǎng)——每日最新資訊28at.com

52Q9j28資訊網(wǎng)——每日最新資訊28at.com

全部Q9j28資訊網(wǎng)——每日最新資訊28at.com

32Q9j28資訊網(wǎng)——每日最新資訊28at.com

64Q9j28資訊網(wǎng)——每日最新資訊28at.com

Q9j28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在我們知道了 float 和 double 中的位分布,我們可以確定數(shù)據(jù)類型的范圍——可以存儲的最大值和最小值。Q9j28資訊網(wǎng)——每日最新資訊28at.com

  • float 可以存儲大約范圍為:±1.5×10^-45到±3.4×10^38(大約6-7位的有效數(shù)字)。
  • double 可以存儲大約范圍為:±5×10^-324到±1.7×10^308(大約15位的有效數(shù)字)。

應(yīng)用領(lǐng)域比較

Float

一般來說,精度要求較低、受處理能力限制或受存儲限制的應(yīng)用程序適合使用 float 而不是 double。這些應(yīng)用程序的一些常見示例如下:Q9j28資訊網(wǎng)——每日最新資訊28at.com

  • 移動設(shè)備:移動設(shè)備的存儲空間通常有限,因此浮動成為顯而易見的選擇。與 double 相比,F(xiàn)loat 需要更少的內(nèi)存并且處理能力更高效。
  • 時間關(guān)鍵型系統(tǒng):時間關(guān)鍵型系統(tǒng)通常受到延遲的限制,這使得它們成為使用浮動的明顯用例。一個典型的例子是自動駕駛汽車,其中更快的處理速度和低處理延遲至關(guān)重要。請注意,使用浮點將使處理速度更快,但會犧牲精度。
  • 圖形和音頻處理:由于浮點精度較低,因此它也適用于圖形和音頻處理——它可以提供足夠精度的應(yīng)用程序。

Double

由于 double 提供了更高的精度,因此與 float 相比,用例是不同的。以下是一些適合使用雙精度而不是浮點的示例:Q9j28資訊網(wǎng)——每日最新資訊28at.com

  • 財務(wù)計算:由于精度是這里的關(guān)鍵,因此在財務(wù)計算中優(yōu)選使用 double 以避免舍入誤差。
  • 科學(xué)計算: double 的另一個用例是需要準(zhǔn)確性的科學(xué)計算。示例包括物理模擬、統(tǒng)計模擬、氣候建模等。
  • 防御系統(tǒng):防御系統(tǒng)是精度至關(guān)重要的重要應(yīng)用。這是因為在導(dǎo)彈制導(dǎo)系統(tǒng)等防御系統(tǒng)中,表示坐標(biāo)至關(guān)重要,并且會顯著影響結(jié)果的準(zhǔn)確性。

下圖簡要總結(jié)了如何在浮點型和雙精度型之間進行選擇。衡量底層應(yīng)用程序的要求進行選擇。Q9j28資訊網(wǎng)——每日最新資訊28at.com

Q9j28資訊網(wǎng)——每日最新資訊28at.com

具有精度、延遲和存能力的蜘蛛圖Q9j28資訊網(wǎng)——每日最新資訊28at.com

舍入誤差

浮點數(shù)的算術(shù)運算并不精確,可能會導(dǎo)致舍入錯誤。這些舍入誤差會隨著時間的推移而累積,從而導(dǎo)致意外的結(jié)果。Q9j28資訊網(wǎng)——每日最新資訊28at.com

讓我們來看一個簡單的例子,在Java中 fractinotallow=1/10 加十次。理想情況下,它應(yīng)該導(dǎo)致1. 我們來看看浮點運算是如何計算的。Q9j28資訊網(wǎng)——每日最新資訊28at.com

public class Main {    public static void main(String[] args) {        float exp_result = 1.0f;        float fraction = 1.0f / 10.0f;        System.out.println();        float sum = 0.0f;        for (int i = 0; i < 10; i++) {            sum += fraction;        }        System.out.println("預(yù)期結(jié)果: " + exp_result);        System.out.println("實際總和: " + sum);        if (exp_result == sum)            System.out.println("預(yù)期結(jié)果等于計算結(jié)果");        else            System.out.println("預(yù)期結(jié)果不等于計算結(jié)果");    }}

算術(shù)運算中的舍入誤差示例Q9j28資訊網(wǎng)——每日最新資訊28at.com

在這里,我們在第 3-4 行f附加或F到值以聲明浮點數(shù)。我們在第 4 行定義一個fraction并在for循環(huán)中將sum添加到第 9-11 行的變量fraction十次。最后,第 16-19 行比較了預(yù)期結(jié)果和實際結(jié)果。Q9j28資訊網(wǎng)——每日最新資訊28at.com

Q9j28資訊網(wǎng)——每日最新資訊28at.com

運行結(jié)果Q9j28資訊網(wǎng)——每日最新資訊28at.com

注意:即使我們將第 3-4 行的變量類型從 float 更改為 double,輸出也不會改變。Q9j28資訊網(wǎng)——每日最新資訊28at.com

輸出顯示實際結(jié)果與預(yù)期結(jié)果不同。這是因為舍入誤差隨著時間的推移而累積。Q9j28資訊網(wǎng)——每日最新資訊28at.com

公差使用

使用浮點數(shù)時,使用適當(dāng)?shù)?/span>公差值比精確更重要。這可以避免在比較浮點數(shù)時出現(xiàn)意外結(jié)果。公差的選擇取決于應(yīng)用和所需的精度。讓我們看看如何在示例中使用公差值。Q9j28資訊網(wǎng)——每日最新資訊28at.com

public class Main {    public static void main(String[] args) {        float exp_result = 1.0f;        float fraction = 1.0f / 10.0f;        float tolerance = 0.000001f;        System.out.println();        float sum = 0.0f;        for (int i = 0; i < 10; i++) {            sum += fraction;        }        System.out.println("預(yù)期結(jié)果: " + exp_result);        System.out.println("實際總和 : " + sum);        if (Math.abs(exp_result - sum) < tolerance)            System.out.println("預(yù)期結(jié)果等于計算結(jié)果");        else            System.out.println("預(yù)期結(jié)果不等于計算結(jié)果");    }}

比較兩個浮點數(shù)與容差的示例Q9j28資訊網(wǎng)——每日最新資訊28at.com

在這里,我們在第 5 行定義了一個變量tolerance來比較第 17 行實際結(jié)果和預(yù)期結(jié)果之間的絕對差異。現(xiàn)在輸出符合預(yù)期。Q9j28資訊網(wǎng)——每日最新資訊28at.com

Q9j28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

在Java中,"float"和"double"是用于表示浮點數(shù)的兩種數(shù)據(jù)類型。它們用于存儲具有小數(shù)部分的數(shù)值,區(qū)別在于精度和存儲空間。Q9j28資訊網(wǎng)——每日最新資訊28at.com

  • 精度:double類型提供更高的精度,因為它具有更多的有效數(shù)字位數(shù)。這使得它在需要更高精度的計算和存儲要求較高的場景中更加適用。
  • 存儲空間:float類型占用32位的存儲空間,而double類型占用64位的存儲空間。這意味著double類型需要更多的內(nèi)存來存儲數(shù)值,但也提供了更大的范圍和精度。

在選擇使用float還是double時,需要根據(jù)具體需求和性能要求進行權(quán)衡。通常情況下,如果需要更高的精度或處理較大的數(shù)值范圍,建議使用double類型。然而,如果內(nèi)存占用是一個關(guān)鍵因素,或者對精度要求不是特別高,可以考慮使用float類型以節(jié)省內(nèi)存空間。Q9j28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-41680-0.htmlJava中的浮點型與雙精度型(Float vs Double)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 2023 年 CSS 新特性大盤點

下一篇: Go語言 字符串拼接方式與性能比較,分析過沒?

標(biāo)簽:
  • 熱門焦點
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當(dāng)時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 自律,給不了Keep自由!

    來源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽為&ldquo;純欲天花板&rdquo;的女網(wǎng)紅井川里予,近期因為一組哥特風(fēng)照片登上熱搜,引發(fā)了一場互聯(lián)網(wǎng)世界關(guān)于
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 超級標(biāo)準(zhǔn)版旗艦!iQOO 11S全球首發(fā)iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數(shù)亮相,而下半年即將推出的頂級旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護航

    喜逢開學(xué)季,各大商家開始推出自己的新產(chǎn)品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
  • 電博會上海爾智家模擬500平大平層,還原生活空間沉浸式體驗

    電博會為了更好地讓參展觀眾真正感受到智能家居的絕妙之處,海爾智家的程傳嶺先生同樣介紹了展會上海爾智家的模擬500平大平層,還原生活空間沉浸式體驗。程傳
Top