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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

先計(jì)算“=”號(hào)右邊的表達(dá)式,字符型、整型和單精度f(wàn)loat類型混合運(yùn)算,因?yàn)橛懈↑c(diǎn)型參與運(yùn)算,“=”右邊表達(dá)式的結(jié)果一定是double類型,按照數(shù)據(jù)類型轉(zhuǎn)換順序,把字符型轉(zhuǎn)換為類型65.0,2轉(zhuǎn)換為2.0,1.5F轉(zhuǎn)換為1.5,最后把雙精度浮點(diǎn)數(shù)68.5賦值給變量d。第10頁(yè),課件共16頁(yè),創(chuàng)作于2023年2月隱式轉(zhuǎn)換

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

inti;

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

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

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

printf("%f\n",f); 輸出結(jié)果是:1.230000第14頁(yè),課件共16頁(yè),創(chuàng)作于2023年2月顯式轉(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只對(duì)1.2取整,相當(dāng)于f1=1+3.4,而f2是對(duì)1.2和3.4的和4.6取整,相當(dāng)于f2=(int)4.6。第15頁(yè),課件共16頁(yè),創(chuàng)作于2023年2月綜合應(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("不同進(jìn)制數(shù)據(jù)輸出字符\'a\'\n");09printf("%u,0%o,0x%x\n",c,c,c); /*十進(jìn)制八進(jìn)制十六進(jìn)制*/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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論