詳解C 的數學類,Math,浮點數 中

2022-02-18 07:16:24 字數 1330 閱讀 4232

兩種浮點資料型別--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...