c語言學習浮點數

2021-09-29 21:05:05 字數 4324 閱讀 9823

浮點數即 小數

一般用  double型雙精度浮點數     %lf

float資料型別  單精度浮點數

表達的是乙個近似的數,到小數點後8位時誤差為  1   不能用  eg:   9.99999999            %f 

用float定義出來 為10.00000000

#include#include#includeint main( )

ii=9.900000

ii=9.990000

ii3=9.999000

ii4=9.999900

ii5=99.999992

ii6=1000.000000

ii7=10000.000000

ii8=100000.000000

ii8==999999.99999999

用==表示兩個整數或者字元相等   對於兩個浮點數,就不相等。

怎麼判斷兩個浮點數相等?      如果兩個浮點數處在在一定誤差範圍內可以判斷出是否相等

eg:          if((100-0.000001)&&(100+ 0.000001) 

double型雙精度浮點數

double  表達的也是乙個近似的數,到第17位時 誤差為1,具體同float%lf

用==可以比較兩個double型別數值是否相等                123456780123.45    一萬yi

long   double

%lf  

總結    如果要顯示小數點後n位   用 %.nlf  ,eg   :double  ii=9.5;

printf("%.2lf",9.50);

庫函式

double atof(const char *nptr);   //把字串nptr轉換為double

#include#include#includeint main( )

double fabs(double x);               // 求雙精度實數x的絕對值

#include#include#include#includeint main( )

~

double pow(double x, double y);     // 求 x 的 y 次冪(次方)

#include#include#include#includeint main( )

double round(double x);              // double四捨五入      對小數點後一位進行四捨五入   

#include#include#include#includeint main( )

~

double ceil(double x);                 // double向上取整數      

ceil()是#include 中的函式,雖然程式中已經包含了該標頭檔案,但是編譯的時候還是說這個函式沒有定義(也就是"對ceil未定義的引用)

需要重新編譯,並在最後加上"-lm"

12.1  取完後為13

double floor(double x);               // double向下取整數

12.8 取完後為12

double fmod(double x,double y);     // 求x/y整除後的雙精度餘數

#include#include#include#includeint main( )

~

結果是2.12   整數部分除以5之後餘下的部分  

gcc -g -o 。。。。。。-lm(加上)    

double modf(double val,double *ip);  

// 把雙精度val分解成整數部分和小數部分,整數部分存放在ip所指的變數中,返回小數部分。

#include#include#include#includeint main( )

~

結果是:0.100000,12.000000

整數轉換為浮點數

#include#include#include#includeint main( )

科學計數法

科學計數法採用%e或%e輸出,完整的輸出格式是%m.ne或%m.ne,指定輸出資料整數部分和小數部分共佔m位,其中有n位是小數。如果數值長度小於m,則左端補空格,若數值長度大於m,則按實際位數輸出。

#include#include#include#includeint main( )

dd is  1.23e+08

dd is -1.23e+08

dd is 1.23e-08

5)重寫浮點數的常用庫函式,實現其功能,函式的宣告如下:

double fabs(const double x);          // 求雙精度實數x的絕對值

double round(const double x);         // double四捨五入

double ceil(const double x);          // double向上取整數

double floor(const double x);         // double向下取整數

// 把雙精度val分解成整數部分和小數部分,整數部分存放在ip所指的變數中,返回小數部分。

double modf(double val,double *ip);

double fabs(const double x);          // 求雙精度實數x的絕對值

#include#include#includedouble fabs(const double x);

int main ()

double fabs(const double x)

double round(const double x);         // double四捨五入

#include#include#include#includedouble ip;

double round(const double x); // double四捨五入

int main ()

double round(const double x)

double ceil(const double x)

double floor(const double x);         // double向下取整數

#include#include#include#includedouble ip;

double floor(const double x);// double向上下取整數

int main()

double floor(const double x)

// 把雙精度val分解成整數部分和小數部分,整數部分存放在ip所指的變數中,返回小數部分。

double modf(double val,double *ip);

#include#include#include#include//把雙精度val分解成整數部分和小數部分,整數部分存放在ip所指的變數中,返回小數部分。

double modf(double val,double *ip);

int main()

// 把雙精度val分解成整數部分和小數部分,整數部分存放在ip所指的變數中,返回小數部分。

double modf(double val,double *ip)

ceil()是#include 中的函式,雖然程式中已經包含了該標頭檔案,但是編譯的時候還是說這個函式沒有定義(也就是"對ceil未定義的引用)

需要重新編譯,並在最後加上"-lm"

gcc -o 5 5.c -lm

請輸入浮點數:

5.4輸入浮點數的整數部分是5.000000,小數部分是0.400000

C語言再學習 浮點數

參考 你應該知道的浮點數基礎知識 浮點數的表示 浮點數的表示和基本運算 單精度浮點float 可以精確到小數點後6位 雙精度浮點double 可以精確到小數點後12位 c可以通過f或f字尾是編譯器把浮點常量當做float型別,比如2.3f和9.11e9f。l或l字尾使乙個數字成為long doubl...

c語言整數轉浮點數 浮點數的秘密

我們在學習 c 語言時,通常認為浮點數和小數是等價的,並沒有嚴格區分它們的概念,這也並沒有影響到我們的學習,原因就是浮點數和小數是繫結在一起的,只有小數才使用浮點格式來儲存。其實,整數和小數可以都使用定點格式來儲存,也可以都使用浮點格式來儲存,但實際情況卻是,c 語言使用定點格式儲存整數,使用浮點格...

C語言 浮點數格式

description 輸入n 0 n 10000 個浮點數,要求把這n個浮點數重新排列 並非排序,而是對齊 後再輸出。每個浮點數中都有小數點且總長度不超過50位。input 第1行是乙個正整數n n 10000 後面n行每行乙個浮點數,每個浮點數中都保證小數點會出現。浮點數的長度不超過50位,注意...