亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中double和float類型的區(qū)別與使用方法

 更新時(shí)間:2024年07月24日 08:42:45   作者:大刀愛(ài)敲代碼  
float和double都是用來(lái)表示浮點(diǎn)數(shù)的數(shù)據(jù)類型,但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關(guān)于Java中double和float類型的區(qū)別與使用方法的相關(guān)資料,需要的朋友可以參考下

double和float類型的區(qū)別與使用

在Java中,double和float都是基本數(shù)據(jù)類型,用于表示浮點(diǎn)數(shù)(即帶有小數(shù)點(diǎn)的數(shù))。

它們?cè)?strong>精度和范圍上有所不同:

double類型提供了更高的精度和更大的范圍,而float類型則精度更低,范圍更少;

聲明這些類型的變量時(shí),你需要遵循特定的語(yǔ)法規(guī)則。

double 類型

  • double類型的變量用于存儲(chǔ)雙精度浮點(diǎn)數(shù)。當(dāng)你聲明一個(gè)double類型的變量時(shí),你不需要在數(shù)值后面加上任何特定的后綴(盡管在某些情況下,加上D或d后綴可以明確表示這是一個(gè)double類型的字面量,但這對(duì)于變量聲明本身不是必需的)。
    • 使用一個(gè)浮點(diǎn)數(shù)字面量(如3.14),Java會(huì)將其視為double類型
    • 如果直接使用一個(gè)整型(如10),Java會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換,即從int 自動(dòng)轉(zhuǎn)換 為double類型。
double md = 3.14; // 3.14就是double類型的數(shù)據(jù)  
double ad = 3.0; // 注意:即使沒(méi)有小數(shù)部分,這也是一個(gè)double類型的浮點(diǎn)數(shù)
double c = 3;// 自動(dòng)類型轉(zhuǎn)換(int-》double)
double d = 10.0d;
double e = 10D;
  • 自動(dòng)類型轉(zhuǎn)換:精度小的類型自動(dòng)轉(zhuǎn)換為精度大的數(shù)據(jù)類型。
    • 數(shù)據(jù)類型按精度(容量)大小排序為:char—>int–>long–>float–>double或者byte–>short–>int–>long–>float–>double

float 類型

  • float類型的變量用于存儲(chǔ)單精度浮點(diǎn)數(shù)。
    • 在聲明float類型的變量并給它賦值時(shí):
      • 如果你直接使用一個(gè)浮點(diǎn)數(shù)字面量(如3.14),Java會(huì)將其視為double類型,因?yàn)楦↑c(diǎn)數(shù)字面量默認(rèn)是double類型的。為了避免編譯錯(cuò)誤,你需要在數(shù)值后面加上F或f后綴來(lái)明確表示這是一個(gè)float類型的字面量。(或者使用 強(qiáng)制類型轉(zhuǎn)換,不建議,會(huì)產(chǎn)生精度損失)
      • 如果直接使用一個(gè)整型(如3),Java會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換,即從int 自動(dòng)轉(zhuǎn)換 為float類型。
float j = 3.14;//這個(gè)會(huì)報(bào)錯(cuò)的,double不可以自動(dòng)轉(zhuǎn)換為float類型

float m = 3.14f;  
float n = 3.0f; // 必須加上f或F后綴
float a = 3;//這個(gè)也可以(自動(dòng)類型轉(zhuǎn)換)

例題:分別有三個(gè)變量,a,b,c,請(qǐng)問(wèn)一下的定義中哪些有錯(cuò)誤:float a=2;float b=2.5;float c=3.0f

Float b = 2.5;存在語(yǔ)法錯(cuò)誤,在Java中2.5是double類型的數(shù)據(jù),不能自動(dòng)轉(zhuǎn)換為float類型的數(shù)據(jù)(可以使用強(qiáng)制類型轉(zhuǎn)換,但是會(huì)有精度損失的風(fēng)險(xiǎn),不建議),所以應(yīng)該改成float b= 2.5f;

Float a= 2;雖然沒(méi)有語(yǔ)法錯(cuò)誤,但是也存在一定的風(fēng)險(xiǎn),因?yàn)?是一個(gè)int類型的數(shù)據(jù),它會(huì)產(chǎn)生自動(dòng)類型轉(zhuǎn)換,有int轉(zhuǎn)換為float。所以最好是改成float = 2f;

總結(jié)

  • double類型的變量用于存儲(chǔ)雙精度浮點(diǎn)數(shù),可以表示更大范圍和更高精度的浮點(diǎn)數(shù)。
  • float類型的變量用于存儲(chǔ)單精度浮點(diǎn)數(shù),范圍和精度較小。
  • 在聲明float類型的變量并賦值時(shí),需要在浮點(diǎn)數(shù)字面量后加上F或f后綴,以明確表示這是一個(gè)float類型的字面量。double類型的字面量在賦值給double類型變量時(shí)不需要特殊后綴(也可以加D或d)。

double和float的精度損失的問(wèn)題解決

  • 使用BigDecimal類:在Java中,BigDecimal類提供了一種精確的浮點(diǎn)數(shù)計(jì)算方式。這個(gè)類可以表示任意精度的十進(jìn)制數(shù),并且可以執(zhí)行精確的數(shù)學(xué)運(yùn)算。當(dāng)需要處理精確的小數(shù)運(yùn)算時(shí),可以使用BigDecimal來(lái)代替基本數(shù)據(jù)類型float和double。
    • double和float類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),是可能發(fā)生精度損失,不是一定會(huì)發(fā)生精度損失的問(wèn)題
		double a =0.1;
        double b = 0.2;
        System.out.println(a + b);//0.30000000000000004
        System.out.println(a * b);//0.020000000000000004

        BigDecimal c = new BigDecimal("0.1");
        BigDecimal d = new BigDecimal("0.2");
        BigDecimal sum = c.add(d); //求和
        System.out.println(sum);// 結(jié)果為 0.3
        BigDecimal ji = c.multiply(d);//乘積
        System.out.println(ji);// 結(jié)果為0。02
  • 設(shè)置浮點(diǎn)數(shù)的精度:如果必須使用float或double類型,并且可以接受一定程度的精度損失,可以通過(guò)設(shè)置浮點(diǎn)數(shù)的小數(shù)點(diǎn)后的位數(shù)來(lái)盡量減小誤差。這通常通過(guò)四舍五入等方式實(shí)現(xiàn),但需要注意,這并不能完全避免精度丟失。
  • 避免不必要的浮點(diǎn)數(shù)運(yùn)算:在算法設(shè)計(jì)時(shí),盡量避免不必要的浮點(diǎn)數(shù)運(yùn)算,或者通過(guò)數(shù)學(xué)變換將浮點(diǎn)數(shù)運(yùn)算轉(zhuǎn)化為整數(shù)運(yùn)算。例如,在計(jì)算百分比時(shí),可以先將百分比乘以100轉(zhuǎn)換為整數(shù)進(jìn)行計(jì)算,最后再除以100得到結(jié)果。

總結(jié) 

到此這篇關(guān)于Java中double和float類型的區(qū)別與使用方法的文章就介紹到這了,更多相關(guān)double和float的區(qū)別與使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用Interceptor攔截器的實(shí)例

    SpringBoot使用Interceptor攔截器的實(shí)例

    這篇文章主要介紹了SpringBoot使用Interceptor攔截器的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • mac下idea的svn密碼記不住的問(wèn)題及處理方法

    mac下idea的svn密碼記不住的問(wèn)題及處理方法

    這篇文章主要介紹了mac下idea的svn密碼記不住的問(wèn)題及處理方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 基于javaweb+jsp的游泳館會(huì)員管理系統(tǒng)(附源碼)

    基于javaweb+jsp的游泳館會(huì)員管理系統(tǒng)(附源碼)

    這篇文章主要介紹了基于javaweb+jsp的游泳館會(huì)員管理系統(tǒng),開(kāi)發(fā)工具eclipse/idea/myeclipse/sts等均可配置運(yùn)行,此源代碼社和課程設(shè)計(jì),大作業(yè)及畢業(yè)設(shè)計(jì)項(xiàng)目,需要的朋友可以參考下
    2022-04-04
  • Java 將Word轉(zhuǎn)為HTML的方法

    Java 將Word轉(zhuǎn)為HTML的方法

    本文介紹如何在JAVA程序中將Word文檔通過(guò)Document.saveToFile()方法轉(zhuǎn)換為HTML文檔,導(dǎo)入jar的兩種方法,文中給大家詳細(xì)介紹,感興趣的朋友一起看看吧
    2021-10-10
  • java實(shí)現(xiàn)簡(jiǎn)單快遞系統(tǒng)

    java實(shí)現(xiàn)簡(jiǎn)單快遞系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單快遞系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot讀取Nacos上配置文件的步驟詳解

    SpringBoot讀取Nacos上配置文件的步驟詳解

    在 Spring Boot 應(yīng)用程序中,可以使用 Spring Cloud Nacos 來(lái)實(shí)現(xiàn)從 Nacos 服務(wù)注冊(cè)中心和配置中心讀取配置信息,本文介紹如何在 Spring Boot 中讀取 Nacos 上的配置文件的步驟,需要的朋友可以參考下
    2024-03-03
  • 教你從頭開(kāi)始用JAVA創(chuàng)建一個(gè)自己的簡(jiǎn)單API并實(shí)現(xiàn)第三方調(diào)用

    教你從頭開(kāi)始用JAVA創(chuàng)建一個(gè)自己的簡(jiǎn)單API并實(shí)現(xiàn)第三方調(diào)用

    在日常開(kāi)發(fā)的時(shí)候,經(jīng)常會(huì)遇到需要調(diào)用別人的接口的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何從頭開(kāi)始用JAVA創(chuàng)建一個(gè)自己的簡(jiǎn)單API并實(shí)現(xiàn)第三方調(diào)用的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • IDEA中maven依賴報(bào)紅的問(wèn)題解決辦法

    IDEA中maven依賴報(bào)紅的問(wèn)題解決辦法

    這篇文章主要給大家介紹了關(guān)于IDEA中maven依賴報(bào)紅的問(wèn)題解決辦法,在使用IDEA過(guò)程中,經(jīng)常會(huì)出現(xiàn)maven依賴報(bào)紅的問(wèn)題,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java中打亂一個(gè)數(shù)組的2種公平算法分享

    Java中打亂一個(gè)數(shù)組的2種公平算法分享

    這篇文章主要介紹了Java中打亂一個(gè)數(shù)組的2種公平算法分享,本文講解了洗牌程序原理、生成隨機(jī)索引交換二種方法并給出示例代碼,需要的朋友可以參考下
    2015-03-03
  • SpringBoot配置Actuator組件,實(shí)現(xiàn)系統(tǒng)監(jiān)控

    SpringBoot配置Actuator組件,實(shí)現(xiàn)系統(tǒng)監(jiān)控

    在生產(chǎn)環(huán)境中,需要實(shí)時(shí)或定期監(jiān)控服務(wù)的可用性。Spring Boot的actuator(健康監(jiān)控)功能提供了很多監(jiān)控所需的接口,可以對(duì)應(yīng)用系統(tǒng)進(jìn)行配置查看、相關(guān)功能統(tǒng)計(jì)等。
    2021-06-06

最新評(píng)論