Ⅰ 整型除以浮點型是什麼型
浮點型精度高於整形,因此整形數先自動被轉換成浮點型,再進行除法運算,最終結果也為浮點型
Ⅱ 整型和浮點型相減的問題
printf("%lf",double(12)-int(12));
有結果,是12.0.
double的12就是12.0
解釋為什麼是死循環-
浮點數是二進制存儲,而精確的浮點二進制存儲為,整數是2的+n次方的算術和,小數是2的-n次方的算術和.例如0.5、0.25、0.125此類小數可以精確表示,而諸如0.1、0.17這類小數就有誤差,具體體現在浮點數的位數波動,實際的存儲值可能編程了0.1000125、0.17000025之類.
double和int的算術運算向double對齊,所以r-int(r)是一個浮點數,顯然當r不是精確二進制小數時,表達式的結果含有小數位,不為double(0),會循環下去.當r較小的時候,表達式的結果僅為一個較小的純小數,當r增大到超過int的極值+2147483648後,(int)r會被截斷,r-int(r)從純小數陡增為極大的浮點數.死循環
你可以嘗試在你的設計中,把r=4.2356改成r=4.125,則不為死循環,可以得到預期結果
或者你改成r-(int)r>0.0001,這樣就只有當r的小數位超過10位的截斷問題.比如r=4.2356時還是無法計算,因為實際存儲位數超過10位,(int)r被截斷後表達式變成很大的浮點數,死循環.
我提供如下演算法.判斷標准比較類似>0.0001這種精確度的折中法,每次*10後判斷個位,連續3次個位為0則退出循環
#include "stdio.h"
main()
{
double r;scanf("%lf",&r);
double r1=(int)r;int m=0,n=0,g;
//g表示個位,r1結合r計算個位
while(1)
{
r*=10;
r1*=10;
g=int(r-r1);
//這樣提取個位比g=int(r)%10可表達的r大,後者r過大會被截斷
r1+=g;
m++;
if(!g)n++;
else n=0;
if(n==3)break;
}
printf("%lf %d",r1/1000,m-3);
}
要注意的是,結果的r1/1000和m-3中只有m有效,表示浮點數實際存儲的小數位,而r1在增大的過程中,可能由於位數過長而被截斷,成為誤差值.例如r=4.2356時,就只有m有效
Ⅲ C語言怎麼把整形數 轉化 浮點型
int a; float b;
b=(float)a;
Ⅳ 怎麼將整型變數除以浮點數常量賦值給整型變數
//程序抄編寫可以直接寫:
int a,b;
b=a/1.3;
//在做運算 a/1.3時候,編譯器將a隱式轉換為浮點類型,並得到浮點結果,記為A
//得到浮點結果A以後,做賦值b=A,編譯器中做了隱式整形類型轉換,可以理解為b=(int)A
//最後b為A的向上取整值
//如果為了寫的規范可以寫成:
int a,b;
b=(int)(a/1.3);
Ⅳ 如何把整形轉化為可以確定小數點位數的浮點型
精度
精度格式符以「.」開頭,後跟十進制整數。本項的意義是:如果輸出數字專,則表示小數的位數;如果輸出屬的是字元,則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。
#include "stdio.h"
#include "conio.h"
main()
{
printf("%.3d\n" , 5555);
getch();
printf("%.3f\n" , 0.88888);
getch();
printf("%.3f\n" , 0.9999);
getch();
printf("%.4s\n" , "this is a test!");
getch();
}
Ⅵ c語言中,整型除以整型得到浮點型,最後再賦給浮點型,怎麼辦
舉例:
int a=3,b=5;
double c=0;
c=a/b; //此時c=3/5=0;
c=a/(double)b; 此時c=3/5.0=0.6;
說明:
當 整型除整型 只能得到整形,需要強制轉換成浮點版
當 除數或被除數有浮權點時,自動轉換成浮點
Ⅶ C++整形減浮點型後int取整
(int)(a-b);首先會把a轉化為浮點型,然後相減,比如(int)(5-2.3)=(int)2.7=2
a-(int)b;是先把b轉化為整型再相減,比如5-(int)2.3=5-2=3
Ⅷ c語言中,整型除整型得到浮點型,賦給整型變數,要強制轉換嗎
舉例:
int a=3,b=5;
double c=0;
c=a/b; //此時襲c=3/5=0;
c=a/(double)b; 此時c=3/5.0=0.6;
說明:
當 整型除整型 只能得到整形,需要強制轉換成浮點
當 除數或被除數有浮點時,自動轉換成浮點
Ⅸ c語言中怎麼把整形轉化成浮點型,就是我用的時候要用小數進行運算
強制轉換就行了。
int a,b;(float)a這樣就轉換成了浮點型。
一個例子:(float)a+(float)
Ⅹ 請問整型數據如何轉成浮點數
C中直接強制轉換就行了……
比如
int a;
如果某函數用著a而且需要是float直接 (float)a 這樣就可以了……