久久午夜无码,日日射天天射五月丁香婷婷我来了 ,欧美黑人又长又粗在线视频,午夜天网站

c語言float(C語言中的小數(shù)floatdouble)

c語言float(C語言中的小數(shù)floatdouble)

介子實 2025-04-15 科技 11 次瀏覽 0個評論

小數(shù)分為整數(shù)部分和小數(shù)部分,它們由點號.

分隔,例如 0.0、75.0、4.023、0.27、-937.198 -0.27 等都是合法的小數(shù),這是最常見的小數(shù)形式,我們將它稱為十進制形式。

此外,小數(shù)也可以采用指數(shù)形式,例如 7.25×102、0.0368×105、100.22×10-2、-27.36×10-3 等。任何小數(shù)都可以用指數(shù)形式來表示。

C語言同時支持以上兩種形式的小數(shù)。但是在書寫時,C語言中的指數(shù)形式和數(shù)學(xué)中的指數(shù)形式有所差異。

C語言中小數(shù)的指數(shù)形式為:

aEn 或 aen

a 為尾數(shù)部分,是一個十進制數(shù);n 為指數(shù)部分,是一個十進制整數(shù);E或e

是固定的字符,用于分割尾數(shù)部分和指數(shù)部分。整個表達式等價于 a×10n。

指數(shù)形式的小數(shù)舉例:

2.1E5 = 2.1×105,其中 2.1 是尾數(shù),5 是指數(shù)。3.7E-2 = 3.7×10-2,其中 3.7 是尾數(shù),-2 是指數(shù)。0.5E7 = 0.5×107,其中 0.5 是尾數(shù),7 是指數(shù)。

C語言中常用的小數(shù)有兩種類型,分別是 float 或 double;float 稱為單精度浮點型,double 稱為雙精度浮點型。

不像整數(shù),小數(shù)沒有那么多幺蛾子,小數(shù)的長度是固定的,float 始終占用4個字節(jié),double 始終占用8個字節(jié)。

小數(shù)的輸出

小數(shù)也可以使用 printf 函數(shù)輸出,包括十進制形式和指數(shù)形式,它們對應(yīng)的格式控制符分別是:

%f 以十進制形式輸出 float 類型;%lf 以十進制形式輸出 double 類型;%e 以指數(shù)形式輸出 float 類型,輸出結(jié)果中的 e 小寫;%E 以指數(shù)形式輸出 float 類型,輸出結(jié)果中的 E 大寫;%le 以指數(shù)形式輸出 double 類型,輸出結(jié)果中的 e 小寫;%lE 以指數(shù)形式輸出 double 類型,輸出結(jié)果中的 E 大寫。

下面的代碼演示了小數(shù)的表示以及輸出:

#include <stdio.h>#include <stdlib.h>int main(){ float a = 0.302; float b = 128.101; double c = 123; float d = 112.64E3; double e = 0.7623e-2; float f = 1.23002398; printf("a=%e \nb=%f \nc=%lf \nd=%lE \ne=%lf \nf=%f\n", a, b, c, d, e, f); return 0;}

運行結(jié)果:a=3.020000e-01b=128.100998c=123.000000d=1.126400E+05e=0.007623f=1.230024

對代碼的說明:1) %f 和 %lf 默認保留六位小數(shù),不足六位以 0 補齊,超過六位按四舍五入截斷。

2) 將整數(shù)賦值給 float 變量時會變成小數(shù)。

3) 以指數(shù)形式輸出小數(shù)時,輸出結(jié)果為科學(xué)計數(shù)法;也就是說,尾數(shù)部分的取值為:0 ≤ 尾數(shù) < 10。

4) b 的輸出結(jié)果讓人費解,才三位小數(shù),為什么不能精確輸出,而是輸出一個近似值呢?這和小數(shù)在內(nèi)存中的存儲形式有關(guān),很多簡單的小數(shù)壓根不能精確存儲,所以也就不能精確輸出,我們將在下節(jié)《小數(shù)在內(nèi)存中是如何存儲的,揭秘諾貝爾獎級別的設(shè)計(長篇神文)》中詳細講解。

另外,小數(shù)還有一種更加智能的輸出方式,就是使用%g

。%g 會對比小數(shù)的十進制形式和指數(shù)形式,以最短的方式來輸出小數(shù),讓輸出結(jié)果更加簡練。所謂最短,就是輸出結(jié)果占用最少的字符。

%g 使用示例:

#include <stdio.h>#include <stdlib.h>int main(){ float a = 0.00001; float b = 30000000; float c = 12.84; float d = 1.229338455; printf("a=%g \nb=%g \nc=%g \nd=%g\n", a, b, c, d); return 0;}

運行結(jié)果:a=1e-05b=3e+07c=12.84d=1.22934

對各個小數(shù)的分析:

a 的十進制形式是 0.00001,占用七個字符的位置,a 的指數(shù)形式是 1e-05,占用五個字符的位置,指數(shù)形式較短,所以以指數(shù)的形式輸出。b 的十進制形式是 30000000,占用八個字符的位置,b 的指數(shù)形式是 3e+07,占用五個字符的位置,指數(shù)形式較短,所以以指數(shù)的形式輸出。c 的十進制形式是 12.84,占用五個字符的位置,c 的指數(shù)形式是 1.284e+01,占用九個字符的位置,十進制形式較短,所以以十進制的形式輸出。d 的十進制形式是 1.22934,占用七個字符的位置,d 的指數(shù)形式是 1.22934e+00,占用十一個字符的位置,十進制形式較短,所以以十進制的形式輸出。

讀者需要注意的兩點是:

%g 默認最多保留六位有效數(shù)字,包括整數(shù)部分和小數(shù)部分;%f 和 %e 默認保留六位小數(shù),只包括小數(shù)部分。%g 不會在最后強加 0 來湊夠有效數(shù)字的位數(shù),而 %f 和 %e 會在最后強加 0 來湊夠小數(shù)部分的位數(shù)。

總之,%g 要以最短的方式來輸出小數(shù),并且小數(shù)部分表現(xiàn)很自然,不會強加零,比 %f 和 %e 更有彈性,這在大部分情況下是符合用戶習(xí)慣的。

除了 %g,還有 %lg、%G、%lG:

%g 和 %lg 分別用來輸出 float 類型和 double 類型,并且當(dāng)以指數(shù)形式輸出時,e小寫。%G 和 %lG 也分別用來輸出 float 類型和 double 類型,只是當(dāng)以指數(shù)形式輸出時,E大寫。數(shù)字的后綴

一個數(shù)字,是有默認類型的:對于整數(shù),默認是 int 類型;對于小數(shù),默認是 double 類型。

請看下面的例子:

long a = 100;int b = 294;float x = 52.55;double y = 18.6;

100 和 294 這兩個數(shù)字默認都是 int 類型的,將 100 賦值給 a,必須先從 int 類型轉(zhuǎn)換為 long 類型,而將 294 賦值給 b 就不用轉(zhuǎn)換了。

52.55 和 18.6 這兩個數(shù)字默認都是 double 類型的,將 52.55 賦值給 x,必須先從 double 類型轉(zhuǎn)換為 float 類型,而將 18.6 賦值給 y 就不用轉(zhuǎn)換了。

如果不想讓數(shù)字使用默認的類型,那么可以給數(shù)字加上后綴,手動指明類型:

在整數(shù)后面緊跟 l 或者 L(不區(qū)分大小寫)表明該數(shù)字是 long 類型;在小數(shù)后面緊跟 f 或者 F(不區(qū)分大小寫)表明該數(shù)字是 float 類型。

請看下面的代碼:

long a = 100l;int b = 294;short c = 32L; float x = 52.55f;double y = 18.6F;float z = 0.02;

加上后綴,雖然數(shù)字的類型變了,但這并不意味著該數(shù)字只能賦值給指定的類型,它仍然能夠賦值給其他的類型,只要進行了一下類型轉(zhuǎn)換就可以了。

對于初學(xué)者,很少會用到數(shù)字的后綴,加不加往往沒有什么區(qū)別,也不影響實際編程,但是既然學(xué)了C語言,還是要知道這個知識點的,萬一看到別人的代碼這么用了,而你卻不明白怎么回事,那就尷尬了。

關(guān)于數(shù)據(jù)類型的轉(zhuǎn)換,我們將在《C語言數(shù)據(jù)類型轉(zhuǎn)換》一節(jié)中深入探討。

小數(shù)和整數(shù)相互賦值

在C語言中,整數(shù)和小數(shù)之間可以相互賦值:

將一個整數(shù)賦值給小數(shù)類型,在小數(shù)點后面加 0 就可以,加幾個都無所謂。將一個小數(shù)賦值給整數(shù)類型,就得把小數(shù)部分丟掉,只能取整數(shù)部分,這會改變數(shù)字本來的值。注意是直接丟掉小數(shù)部分,而不是按照四舍五入取近似值。

請看下面的代碼:

#include <stdio.h>int main(){ float f = 251; int w = 19.427; int x = 92.78; int y = 0.52; int z = -87.27; printf("f = %f, w = %d, x = %d, y = %d, z = %d\n", f, w, x, y, z); return 0;}

運行結(jié)果:f = 251.000000, w = 19, x = 92, y = 0, z = -87

由于將小數(shù)賦值給整數(shù)類型時會“失真”,所以編譯器一般會給出警告,讓大家引起注意。

轉(zhuǎn)載請注明來自夕逆IT,本文標(biāo)題:《c語言float(C語言中的小數(shù)floatdouble)》

每一天,每一秒,你所做的決定都會改變你的人生!

發(fā)表評論

快捷回復(fù):

評論列表 (暫無評論,11人圍觀)參與討論

還沒有評論,來說兩句吧...

亚洲无码真人久久| 日韩午夜影院| 黄色三级无码毛片| 国产精品色哟| 色欲色香久久| 英德市| 91国内在线看| 欧美久久久精品| 四虎影视欧美黄片| 在线播放国产免费区| 亚洲成人免费电影网| 国产AV一区仑乱| 久久国产欧美| 一区三区综合网| 久久久中文一区| 色欲久久不卡一区二区| 日韩av天堂艺术| X8X8三及片| 国产综合精品久久无码| √a在线在线| 亚洲图区 人妻 小说| 欧美亚洲国产中文专区在线| 亚洲精品日本看片在线观看| 偷拍视频亚洲午夜| 人妻少妇伦在线无码专区视频 | 长海县| 就爱看AV网| 久久99综合精品国产首页| 欧美放荡办公室| 精品国产乱码久久久久久天美| 亚洲中文激情| 亚洲国产午夜精无码福利| 久久精品女人天堂AV色| 亚洲AV成人精品日韩在线播放| 亚洲一区欧美在线观看| 亚洲欧美成a人视频在线观看| 久久久久久久国产亚洲| 操操色网| 中文字幕精品视频在线观| 中文字幕日韩精品无码精品| 久久添久久躁|