本節書摘來自華章計算機《編寫高品質代碼:改善c程式代碼的125個建議》一書中的第1章,建議3,作者:馬 偉 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
c語言标準規定的浮點資料類型有float、double、long double三種,如表1-7所示。

和整型一樣,浮點資料類型既沒有規定每種類型占多少位元組,也沒有規定采用哪種表示形式。是以,浮點資料類型的實作在各種平台上差異很大,有的處理器有浮點運算單元(floating point unit,fpu),稱為硬浮點(hard-float)實作;而有的處理器沒有浮點運算單元,隻能做整數運算,也就是需要用整數運算來模拟浮點運算,這種實作方式稱為軟浮點(soft-float)實作。迄今為止,大部分平台的浮點數實作都遵循ieee 754标準(ieee standard for binary floating-point arithmetic,ansi/ieee std 754-1985)。
這裡需要特别說明的是,ansi c并未規定long double類型的準确精度。正因為如此,對于不同的平台,long double類型可能有不同的實作,有的是8位元組,有的是10位元組,還有的是12位元組或更多。在x86平台上,大多數編譯器實作的long double類型是80位,因為x86的浮點運算單元具有80位精度。如在vc++ 2010中運作“sizeof(long double)”所得的結果為8,而在gcc中運作“sizeof(long double)”所得的結果則為12(即96位)。但一般來說,long double類型的精度要高于double類型,至少它們也應該相等。