兩種浮點資料型別--float和double,是為了與ansi/ieee std 754-1985(它是一種用於二進位制浮點算術的ieee標準)相一致而定義的.
float值由24位有符號尾數和乙個8位有符號指數組成。精度大於為小數點後7位。值的範圍是從
-3.402823*1038到3.402823*1038 大於0的最小float值是1.401298*10-45這三個值分別對應的是
float.minvalue,float.maxvalue,float.epsilon.
double值由53位有符號尾數和11位有符號指數組成,精度大約為小數點後15位到16位。值的範圍從
-1.79769313486232*10308到1.79769313486232*10308.大於0的最小double值是:4.94065645841247*10-324分別對應:
double.minvalue,double.maxvalue,double.epsilon.
下面的**使乙個浮點數除以0;
float f1=1;
float f2=0;
float f3=f1/f2;
看到上面的**,你是否會立馬想到dividedbyzeroexception。如果這些數是整數的話,的確會丟擲異常,但是這些數是浮點數,這裡不會產生異常,
事實上,浮點數運算從來不會產生異常,因為f2並不是真正意義上的0,它只是乙個與0非常接近的數(具體可以看我上篇文章)。在這種情況下f3等於乙個特殊的值。它是infinity(正無窮大),
如果將f1更改為-1,那麼f3的符號將是負的,它是-infinity(負無窮大)。
你甚至可以對infinity執行算術運算,例如,表示式1/f3等於0。
如果將f1更改為0,那麼f3將等於nan(not a number,未知數).
判斷乙個數是infinity或者是nan使用的是single的靜態方法:
bool isinfinity(float fvalue); //判斷是否為無窮大
bool ispositiveinfinity(float fvalue); //判斷是否為正無窮大
bool isnegativeinfinty(float fvalue); //判斷是否為負無窮大
bool isnan(float fvalue); //判斷是否為nan
single結構還定義了一些常量字段。
single.positiveinfinity.
single.negativeinfinity.
single.nan.
詳解C 的數學類,Math,浮點數 中
兩種浮點資料型別 float和double,是為了與ansi ieee std 754 1985 它是一種用於二進位制浮點算術的ieee標準 相一致而定義的.float值由24位有符號尾數和乙個8位有符號指數組成。精度大於為小數點後7位。值的範圍是從 3.402823 1038到3.402823 1...
詳解C 的數學類,Math,浮點數 上
c 語言支援表b 1所示的11種數值型別,分別為整數,浮點數和小數。在乙個c 程式中,整數 沒有小數點的數 被認為是乙個int型別 除非其值大於最大的int值 根據資料值,該資料依次被視為uint,long,ulong,帶小數點的數被認為是乙個double值。這就是說 1.0 gettype typ...
詳解C 的數學類,Math,浮點數 上
c 語言支援表b 1所示的11種數值型別,分別為整數,浮點數和小數。在乙個c 程式中,整數 沒有小數點的數 被認為是乙個int型別 除非其值大於最大的int值 根據資料值,該資料依次被視為uint,long,ulong,帶小數點的數被認為是乙個double值。這就是說 1.0 gettype typ...