什么是浮點型?什么是單精度浮點數(float)以及雙精度浮點數(double)?


前言

作為一名java學習者,怎能不懂這些java基礎中的基礎呢?本文就帶各位溫顧溫顧java浮點型、單精度浮點數、雙精度浮點數。

浮點型

首先明確java中浮點型數據類型主要有:單精度float、雙精度double

 

至於浮點型就是跟intstring類型差不多。都是數據類型

浮點型浮點型別給我整些花里胡哨的定義,浮點型簡單來說就是表示帶有小數的數據,而恰恰小數點可以在相應的二進制的不同位置浮動,可能是這樣就被定義成浮點型了。不得不佩服這文化程度,定義個數據名稱都這么有深度

浮點型常量 Java的實常數有兩種表示形式:

1、 十進制數形式:由數字和小數點組成,且必須有小數點,如0.123 , 123.0

2、科學計數法形式:如:123e3123E3,其中eE之前必須有數字,且e或E后面的指數必須為整數(當然也包括負整數)。

科學計數法中的E

了解浮點型常量 Java的實常數有兩種表示形式之后,很有必要給各位科普科普下科學計數法中E的面貌了~

E是指數的意思,E代表的英文是exponentE表示10的多少次方的意思

 

比如7.823E5 = 782300 這里E5表示10的5次方,再比如54.3E-2 = 0.543這里E-2表示10的-2次方

再補充一點(針對負次方理解

一個數的負幾次方就是這個數的幾次方的倒數

 

比如: 2的負1次方=2的1次方分之一=1/2

 

比如: 3的負2次方=3的2次方分之一=1/9

單精度浮點數(float)

單精度浮點數在機內占4個字節、有效數字8位、表示范圍:-3.40E+38 ~ +3.40E+38

在Java語言當中,所有的浮點型字面值 【V8提示】浮點型簡單來說就是表示帶有小數的數據 默認當做double類型來處理,要想該字面值當做float類型來處理,需要在字面值后面添加F/f,或者強制裝換為float。具體如下代碼:

 public static void main(String[] args) {
   //3.10是浮點型,浮點型字面值默認當做double類型來處理,直接編譯通過;
      double d=3.10;
   //3.10是浮點型,則必須加 F或者f,若沒加,直接編譯不通過,會報錯“損失精度”   
      float f=3.10;  //編譯出錯會報錯“損失精度”
     //   解決辦法:
     //   第一種方式:強制類型轉換
        float f1=(float)5.1;
     //   第二種方式:沒有類型轉換;
        folat f2=5.1f;
    }

再來看看下面的測試,結果肯定十之八九會在意料之外,哈哈~

 public static void main(String[] args) {
        float a = 12345678.90123456789f;
        double b=0.12345678901234567890;
        float c=0.12345678901234567890f;
     
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        
		打印結果
		a = 1.2345679E7
		b = 0.12345678901234568
		c = 0.12345679
    }

雙精度浮點數(double)

雙精度浮點數在機內占8個字節、有效數字16位、表示范圍:-1.79E+308 ~ +1.79E+308

double的精度太低,不適合用於做財務軟件,財務涉及到錢的問題,要求精度較高,所以在java中有一個基礎的類庫名為:java.math.BigDecimal,但這個BigDecimal類型是引用類型不是基礎類型,切記!!!

在講單精度浮點數(float)的時候,差不多順道把double之間的區別講了哈哈,所以最后給張很經典的圖片“敷衍敷衍”下,哈哈哈 哎哎哎..別打...別打...別打臉QAQ
在這里插入圖片描述
想深入了解浮點數在計算機中存儲方式可以參考這篇文章
浮點數在計算機中存儲方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM