單精度與雙精度是什麼意思,有什麼區別?
單精度是這樣的格式,1位符號,8位指數,23位小數。
雙精度是1位符號,11位指數,52位小數。
含義:表明單精度和雙精度精確的範圍不一樣,單精度,也即float,一般在計算機中存儲佔用4位元組,也32位,有效位數為7位;雙精度(double)在計算機中存儲佔用8位元組,64位,有效位數為16位。
原因:不管float還是double 在計算機上的存儲都遵循IEEE規範,使用二進位科學計數法,都包含三個部分:符號位,指數位和尾數部分。其中float的符號位,指數位,尾數部分分別為1, 8, 23. 雙精度分別為1, 11, 52。
精度主要取決於尾數部分的位數,float為23位,除去全部為0的情況以外,最小為2的-23次方,約等於1.19乘以10的-7次方,所以float小數部分只能精確到後面6位,加上小數點前的一位,即有效數字為7位。 類似,double 尾數部分52位,最小為2的-52次方,約為2.22乘以10的-16次方,所以精確到小數點後15位,有效位數為16位。32位浮點數就是單精度,
64位浮點數就是雙精度。
可參考回答:
Boss呱呱:java浮點類型float和double的主要區別,它們的小數精度範圍大小是多少?
要先理解3大要點:
- 小數的二進位表示法,即浮點數,IEEE 754
- 浮點數如何在計算機中儲存,即符號位,指數位,小數位(通常翻譯做尾數)
- 取值範圍取決於指數位,計算精度取決於小數位(尾數)。小數位越多(比如雙精度是52位),則能表示的數越大,那麼計算精度則越高。
單精度的小數位在計算機中只有23位(二進位),換算到十進位只能百分百保證6位十進位數字的精確度。不能百分百保證7位的精度運算。超過該精度(二進位23位,十進位6位)的小數運算將會被截取,造成精度損失和計算結果的不準確。
同理,雙精度,小數位是52位(二進位),換算為十進位則只能百分百能保證15位。
float為單精度實數,double為雙精度實數
1、單精度,也就是 float ,在 32 位機器上用 4 個位元組來存儲的;而雙精度double是用 8 個位元組來存儲的,這是他們最本質的區別。
2、由於存儲位不同,他們能表示的數值的範圍就不同,也就是能準確表示的數的位數就不同。
float的精度是6位有效數字,取值範圍是10的-38次方到10的38次方,float佔用4位元組空間
double的精度是15位有效數字,取值範圍是10的-308次方到10的308次方,double佔用8位元組空間。
比如3.1415926(我就只能記這麼點⊙▽⊙)....這個實數,單精度float型就可能表現為3.1415,雙精度double型就可能表現為3.1415926。也就是說這倆類型的區別就是小數點後面的保留位數不一樣(即精度),具體到底保留多少位,額。。不要問我。。我也記不住。
浮點數單精度浮點數雙精度浮點數凡事多動手,拒絕當伸手黨
用一個位元組實現浮點數(What if...)
這裡設計了用一種用一個位元組實現浮點數的方法。
用這種極端的情況舉例有助於說明問題。希望對題主有所幫助。
因為隨著測量和數據的需要,我們需要更加精密的描述,如開根號2。在數學中,我們叫科學計數法。計算機中同類型的東西被稱為浮點型。記住,它的存在意義和價值是計算的精度,雙精度比單精度更精密,但同時更耗空間
簡單 來說 就是 double 和 float 這個 網上 有一個 IEEE754標準
初學這 只需要了解即可
具體如何 表示的 不需要深入理解 簡單交流歡迎加群201030910
推薦閱讀:
※浮點數的表示中為什麼要用移碼錶示階碼?
※0 pow 0 是多少(pow(0,0))?
TAG:浮點數 |