① c語言,兩個整數相除如果得到的是小數怎麼輸出小數求大神幫我改一下這個程序
把變數改成雙精度型(double)的就好了,dev-c++用的編譯器是gcc,在我的電腦上實驗雙精度的沒問題,如果不行的話可以換成浮點型變數(float),但是會損失精度
② C語言中的單精度和雙精度輸出時小數點後應該出多少位!!!!
單精度6位,雙精度12位
③ c語言如何讓輸出結果精確到兩位小數
可以在輸出的時候限制小數點位數。
1、當輸出單精度浮點型float變數f時,可以用printf("%.2f",
f);來使輸出結果保留兩位有效數字。其中.2就是代表保留兩位,如果要保留三位就是%.3f。用%.0f就是只輸出整數。
2、如果是雙精度浮點數double,就需要用%.2lf來使輸出結果保留2位小數。
④ C語言程序設計問題:關於單精度和雙精度輸出位數問題……
32位環境printf的%f和%lf都是double,沒有單精度的輸出。
%f的默認小數位數就是6位不管有沒有l。
是float直接從十進制數字轉換來的情況下十進制可靠有效數字是7位。float的有效數字永遠是二進制24位。
⑤ C語言中的雙精度浮點數在輸出的時候是用%f嗎
用%lf,%f是單精度的,其實最好都用雙精度的,單精度的輸出有問題,只有6位有效數字。
⑥ 怎麼用C語言代碼實現超高精度的大數據除法運算要求結果保留到小數點後有兩位
#include<stdio.h>
#include<string.h>
#defineMAX_LEN200
chara[MAX_LEN+10];
charb[MAX_LEN+10];
intva[MAX_LEN+10];//被除數,an1[0]對應於個位
intvb[MAX_LEN+10];//除數,an2[0]對應於個位
intvc[MAX_LEN+10];//存放商,aResult[0]對應於個位
//長度為nLen1的大整數p1減去長度為nLen2的大整數p2
//結果放在p1里,返回值代表結果的長度
//如不夠減返回-1,正好減完返回0
//下面判斷p1是否比p2大,如果不是,返回-1
intSubstract(int*p1,int*p2,intnLen1,intnLen2)
{
inti;
if(nLen1<nLen2)
return-1;
if(nLen1==nLen2)
{
for(i=nLen1-1;i>=0;i--)
{
if(p1[i]>p2[i])break;//p1>p2
elseif(p1[i]<p2[i])return-1;//p1<p2
}
}
for(i=0;i<nLen1;i++)
{//要求調用本函數確保當i>=nLen2時,p2[i]=0
p1[i]-=p2[i];
if(p1[i]<0)
{
p1[i]+=10;
p1[i+1]--;
}
}
for(i=nLen1-1;i>=0;i--)
if(p1[i])//找到最高位第一個不為0
returni+1;
return0;//全部為0,說明兩者相等
}
intmain()
{
freopen("test.txt","r",stdin);
inttest;
scanf("%d",&test);
while(test--){
scanf("%s",a);
scanf("%s",b);
inti,j;
intlena=strlen(a);
memset(va,0,sizeof(va));
memset(vb,0,sizeof(vb));
memset(vc,0,sizeof(vc));
for(j=0,i=lena-1;i>=0;i--)
va[j++]=a[i]-'0';
intlenb=strlen(b);
for(j=0,i=lenb-1;i>=0;i--)
vb[j++]=b[i]-'0';
if(lena<lenb)
{
printf("0 ");
continue;
}
intnTimes=lena-lenb;
if(nTimes>0)
{
for(i=lena-1;i>=nTimes;i--)
vb[i]=vb[i-nTimes];//朝高位移動
for(;i>=0;i--)//低位補0
vb[i]=0;
lenb=lena;
}
for(j=0;j<=nTimes;j++)
{
intnTmp;
//一直減到不夠減為止
//先減去若干個an2×(10的nTimes次方),
//不夠減了,再減去若干個an2×(10的nTimes-1次方),......
while((nTmp=Substract(va,vb+j,lena,lenb-j))>=0)
{
lena=nTmp;
vc[nTimes-j]++;//每成功減一次,則將商的相應位加1
}
}
//下面輸出結果,先跳過高位0
for(i=MAX_LEN;(i>=0)&&(vc[i]==0);i--);
if(i>=0)
for(;i>=0;i--)
printf("%d",vc[i]);
else
printf("0");
printf(" ");
}
return0;
}
⑦ c語言中,一個雙精度數除以一個整型數,結果是什麼類型的
答案:雙精度數
計算時 會自動發生類型轉換
一個算式裡面 如果有個雙精度數 那麼和他運算的數會自動轉換為雙精度數 計算結果也會是雙精度數
⑧ C語言 雙精度,單精度是怎麼計算的
單精度就是精度小點 范圍小 小數點後面的位數少
雙精度就是精度大點 范圍大 小數點後面的位數多
⑨ C語言如何輸出雙精度浮點型數據
1.雙精度浮點型數據用%lf輸出。因為double是8個位元組的,float是4個位元組的,%f 的格式就是4個位元組的,而 %lf 就是8個位元組的。 例如:printf("%lf ",x);
2.short 佔用內存空間2個位元組,短整型數據用%d輸出 例如:printf("%d ",a);
例:
#include <stdio.h>
int main()
{double x;
short int a;
printf("%lf",x); // 輸入double型
printf("%d",a); //輸入短整型
return 0;
}
(9)c語言雙精度除法輸出精度擴展閱讀:
C語言特有特點
1.C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2.C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3.不同的變數類型可以用結構體(struct)組合在一起。
4.只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5.部份的變數類型可以轉換,例如整型和字元型變數。
6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7.預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
⑩ C語言 運行結果中為什麼雙精度實型只輸出小數點後六位
在C語言中,輸出double類型(雙精度實型)以及float類型(單精度實型)時,默認輸出6位小數。
比如這樣的代碼:
doublea=1;
printf("%lf ",a);
輸出會是
1.000000
但是有時六位會顯得很長,沒必要。比如計算平均分,一到兩位小數就足夠了。
可是有時六位又不夠,需要更多位小數,比如計算高精度平方根。
這時可以用printf的格式控制。
如果要輸出n位小數,那麼可以用%.nlf的格式。其中n為數字。
如要輸出10位小數,那麼
printf("%.10lf ", a);
即可
類似的輸出1位小數
printf("%.1lf ", a);