最本質的區別:單精度,也就是 float ,在 32 位機器上用 4 個字節來存儲的;而雙精度double是用 8 個字節來存儲的,由於存儲位不同,他們能表示的數值的范圍就不同,也就是能准確表示的數的位數就不同。
1、所占的內存不同
單精度浮點數bai占du用4個字節(32位)存儲空間來存儲一個浮點數,包括符號位1位,階碼8位,尾數23位。
而雙精度浮點數使用 8個字節(64位)存儲空間來存儲一個浮點數,包括符號位1位,階碼11位,尾數52位。
2、所存的數值范圍不同
單精度浮點數的數值范圍為-3.4E38~3.4E38,而雙精度浮點數可以表示的數字的絕對值范圍大約是:-2.23E308 ~ 1.79E308。E表示10的多少次方,如3.4E38指的是3.4乘以10的38次方。
3、十進制下的位數不同
單精度浮點數最多有7位十進制有效數字,如果某個數的有效數字位數超過7位,當把它定義為單精度變量時,超出的部分會自動四舍五入。
雙精度浮點數可以表示十進制的15或16位有效數字,超出的部分也會自動四舍五入。