1樓:網友
不知道樓主需不需要規格化小數。
提取階碼可以這樣,就32位浮點數來說。
第31位是符號位,然後跟著8位是階碼,第30位是階碼符號位,跟著7位是階碼值,可以這樣。
char power1,power2;
unsigned int tail1,tail2
float n1,n2;
power1 = char)((unsigned int)n1 <<1) >24);
power2 = char)((unsigned int)n2 <<1) >24);
tail1 = unsigned int)n1 >>23) &0x7fffff;
tail2 = unsigned int)n2 >>23) &0x7fffff;
首先兩個相加。
power1 +=power2;
然後兩個相乘。
tail1 *=tail2
2樓:匿名使用者
#include
void main()
float a,b,c;
printf("請輸入要相加的2個數:");
scanf("%f%f",&a,&b);
c=a+b;
printf("%f",c);
可以在%f的f之前加。x來決定小數點後有x位,預設為6位。
3樓:小在車
提取階碼可以這樣,就32位浮點數來說。
第31位是符號位,然後跟著8位是階碼,第30位是階碼符號位。
符號 階碼 尾數。
#include
union number
float a1;
unsigned int a2;
load;void main()
double z,x;
cout<<"請輸入第乙個數:";
cin>>;
double b1,b2,m1,m2,m3;
int k,i,m=1;
b1=;if(b1==0)
cout<>;
double c1,c2,n1,n2,n3;
int j,l,n=1;
c1=;if(c1==0)
coutn1=c2/8388608; /移位,把高位(30-22)降位到(7-0)
j=n1-126;
cout<<<"的階碼為:"n2=;//取尾數。
n2=n2+8388608;
coutn3=n2/16777216;
x=n3;cout<<"尾數為:"* for(i=1;im=m*2;
coutn1=c2/8388608; /移位,把高位(30-22)降位到(7-0)
j=n1-126;
coutn2=n2+8388608;
coutn3=n2/16777216;
x=-n3;
cout<<"尾數為:"* for(i=1;im=m*2;
cout<<-m3*m; *
cout<<"兩數和為:";
for(i=1;im=m*2;
for(l=1;ln=n*2;
double com;
com=z*m+x*n;
cout< 初學c,不知道怎麼處理浮點數相加一類,求解謝謝。。 4樓:還存在那麼一些 先把1/k=1/x+1/y化成xy=(x+y)k當1<=x0<=x時有1/k=1/x+1/y<=1/x0+1/y... 又∵x>=y 1/k=1/x+1/y<=1/y+1/y=2/y,即y<=2k... 又1/k=1/x+1/y>1/y,即k #include void main()} 5樓: 提供個思路吧, 首先給乙個數,可以找到 他的兩個二分之一 加起來。 然後 比如12 就找到兩個24分之一,然後依次將24遞減,看看能不能找到另乙個整數加起來剛好也對的。 include int main 怎樣用c語言寫一個將小數轉化成最簡分數的演算法 演算法很簡單,程式中已經說明。重要的是系統對浮點數是有修正的,導致結果出現問題。如何解決,詳見程式。include stdafx.h vs 預設使用 include include include pragma war... 先存成字串,判斷有沒有小數點,再從字串格式化成整型或浮點型。include include include char strchr const char str,int ch int main int argc,char argv else system pause return 0 scanf s... 正如樓上所說,這個方法是很多的。我舉一個例子 include void swap double x,double y 定義交換函式 main for i 0 i 3 i 氣泡排序for j 0 j 3 i j if st j st j 1 swap st j st j 1 for i 0 i 5 i...C語言關於分數的浮點數值的計算,怎樣用c語言寫一個將小數轉化成最簡分數的演算法
c語言中怎樣判斷輸入的是整數還是浮點數
C語言 呼叫自定義交換函式,完成浮點數從小到大排列