浮點型類型轉(zhuǎn)換_第1頁
浮點型類型轉(zhuǎn)換_第2頁
浮點型類型轉(zhuǎn)換_第3頁
浮點型類型轉(zhuǎn)換_第4頁
浮點型類型轉(zhuǎn)換_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

浮點型類型轉(zhuǎn)換第一頁,共十六頁,2022年,8月28日浮點型C語言中除了整型外,另外一種數(shù)據(jù)類型就是浮點型,浮點型可以表示有小數(shù)部分的數(shù)據(jù)。浮點型包含三種數(shù)據(jù)類型,分別是單精度的float類型,雙精度的double類型,和長雙精度longdouble類型。第二頁,共十六頁,2022年,8月28日浮點型(圖表)浮點型floatdoublelongdouble類型位數(shù)有效數(shù)字取值范圍float326~7-1.4e-45~3.4e38double6415~16-4.9e-324~1.8e308longdouble12818~19——第三頁,共十六頁,2022年,8月28日浮點型參與運算的表達式中存在double類型,或者說,參與運算的表達式不是完全由整型組成的,在沒有明確的類型轉(zhuǎn)換標識的情況下(將在下一小節(jié)中講解),表達式的數(shù)據(jù)類型就是double類型。例如:1+1.5+1.23456789 /*表達式運算結(jié)果是double類型*/1+1.5 /*表達式運算結(jié)果是double類型*/1+2.0 /*表達式運算結(jié)果是double類型*/1+2 /*表達式運算結(jié)果是int類型*/例子當?shù)?.5,編譯器默認它為雙精度的double類型,精度高占據(jù)存儲空間大,如果只希望以單精度float類型運行,可以在常量后添加字符‘f’或者‘F’都可以,比如1.5F,2.38F。同樣的,如果希望數(shù)據(jù)是以精度更高的longdouble參與運算,可以在常量后添加字符‘l’或者‘L’都可以,比如1.51245L,2.38000L。建議使用大寫‘L’,因為小寫‘l‘容易和數(shù)字1混淆。第四頁,共十六頁,2022年,8月28日浮點型再舉幾個運算的表達式的例子,如下所示:inti,j;floatm;doublex;i+j /*表達式運算結(jié)果是int類型*/i+m /*表達式運算結(jié)果是float類型*/i+m+x /*表達式運算結(jié)果是double類型*/第五頁,共十六頁,2022年,8月28日浮點型指數(shù)形式如下所示(‘e’或者‘E’都可以)2.0e3 表示2000.01.23e-2 表示0.0123.123e2 表示12.31.e-3 表示0.001對于指數(shù)形式,有以下兩點要求:⑴字母e前面必須要有數(shù)字⑵字母e的后面必須是整數(shù)浮點型小數(shù)形式指數(shù)形式第六頁,共十六頁,2022年,8月28日類型轉(zhuǎn)換1隱式轉(zhuǎn)換2顯式轉(zhuǎn)換第七頁,共十六頁,2022年,8月28日類型轉(zhuǎn)換計算過程中,如果遇到不同的數(shù)據(jù)類型參與運算該怎么辦,是終止程序還是轉(zhuǎn)換類型后繼續(xù)運算。編譯器采取第二種方式,如果能夠轉(zhuǎn)換成功,程序繼續(xù)運算,如果轉(zhuǎn)換失敗,程序報錯同時終止運行。數(shù)據(jù)類型有兩種轉(zhuǎn)換方式,分別隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。第八頁,共十六頁,2022年,8月28日隱式轉(zhuǎn)換C語言中設(shè)定了不同數(shù)據(jù)參與運算時的轉(zhuǎn)換規(guī)則,編譯器會在悄無聲息中進行數(shù)據(jù)類型的轉(zhuǎn)換,進而計算出最終結(jié)果,這就是隱式轉(zhuǎn)換。第九頁,共十六頁,2022年,8月28日隱式轉(zhuǎn)換 inti; i=2+'A';

先計算“=”號右邊的表達式,字符型和整型混合運算,按照數(shù)據(jù)類型轉(zhuǎn)換先后順序,把字符型轉(zhuǎn)換為int類型65,然后求和得67,最后把67賦值給變量i。

doubled; d=2+'A'+1.5F;

先計算“=”號右邊的表達式,字符型、整型和單精度float類型混合運算,因為有浮點型參與運算,“=”右邊表達式的結(jié)果一定是double類型,按照數(shù)據(jù)類型轉(zhuǎn)換順序,把字符型轉(zhuǎn)換為類型65.0,2轉(zhuǎn)換為2.0,1.5F轉(zhuǎn)換為1.5,最后把雙精度浮點數(shù)68.5賦值給變量d。第十頁,共十六頁,2022年,8月28日隱式轉(zhuǎn)換

上述情況都是有低精度類型向高精度類型的轉(zhuǎn)換,如果逆向轉(zhuǎn)換,可能會出現(xiàn)丟失數(shù)據(jù)的危險,編譯器會以警告的形式給出提示。例如:

inti;

i=1.2; 浮點數(shù)1.2舍棄小數(shù)位后,把整數(shù)部分1賦值給變量i。如果i=1.9,運算后變量i的值依然是1,而不是2。注意:把浮點數(shù)轉(zhuǎn)換為整數(shù),直接舍棄小數(shù)位。第十一頁,共十六頁,2022年,8月28日隱式轉(zhuǎn)換【范例-1】整型和浮點型數(shù)據(jù)類型間的隱式類型轉(zhuǎn)換。01#include<stdio.h>02intmain(void)03{04inti;05i=1+2.0*3+1.234+'c'-'A'; /*混合運算*/06printf("%d\n",i); /*輸出i*/07return0;08}第十二頁,共十六頁,2022年,8月28日顯式轉(zhuǎn)換隱式類型轉(zhuǎn)換編譯器是會產(chǎn)生警告的,提示程序存在潛在的隱患。如果非常明確的希望轉(zhuǎn)換數(shù)據(jù)類型,這就需要用到顯式類型轉(zhuǎn)換了。顯式轉(zhuǎn)換格式如下所示:(類型名稱)變量或者常量或者(類型名稱)(表達式)第十三頁,共十六頁,2022年,8月28日顯式轉(zhuǎn)換例如,需要把一浮點數(shù),以整數(shù)的形式使用printf()函數(shù)輸出,怎么辦?就可以調(diào)用顯示類型轉(zhuǎn)換。

floatf=1.23; printf("%d\n",(int)f);

可以得到輸出結(jié)果1,沒有因為調(diào)用的printf()函數(shù)格式控制列表和輸出列表前后類型不統(tǒng)一導致程序報錯。 繼續(xù)分析上例,顯示類型轉(zhuǎn)換只是把f小數(shù)位直接舍棄,輸出了整數(shù)部分,變量f的值和數(shù)據(jù)類型都沒有改變,依然是float類型1.23,可以再次輸出結(jié)果進行查看。

printf("%f\n",f); 輸出結(jié)果是:1.230000第十四頁,共十六頁,2022年,8月28日顯式轉(zhuǎn)換 再看下面的例子,分析結(jié)果是否相同。 例如

floatf1,f2; f1=(int)1.2+3.4; f2=(int)(1.2+3.4); printf("f1=%f,f2=%f",f1,f2);

輸出結(jié)果:f1=4.4,f2=4.0

顯然結(jié)果是不同的,原因是f1只對1.2取整,相當于f1=1+3.4,而f2是對1.2和3.4的和4.6取整,相當于f2=(int)4.6。第十五頁,共十六頁,2022年,8月28日綜合應(yīng)用——類型轉(zhuǎn)換【范例-2】綜合應(yīng)用數(shù)據(jù)類型和類型轉(zhuǎn)換的。01#include<stdio.h>02#include<stdio.h>03intmain(void)04{05inti;06doubled;07charc='a';08printf("不同進制數(shù)據(jù)輸出字符\'a\'\n");09printf("%u,0%o,0x%x\n",c,c,c); /*十進制八進制十六進制*/10i=2;11d=2+c+0.5F; /*隱式類型轉(zhuǎn)換*/12printf("隱式數(shù)據(jù)類型轉(zhuǎn)換%f\n",d);13i=d; /*隱式類型轉(zhuǎn)換,舍棄小數(shù)位*/14printf("隱式數(shù)據(jù)類型轉(zhuǎn)換%d\n",i);15d=(int)1.2+3.9; /*顯式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論