1樓:瑞春楓
對12.345來說,先乘以1000,得到12345,賦值給整型,12345%10得到個位數,判斷這個個位數若大於等於5則把12345加10-個位數,若小於5,則12345減去個位數,然後把最終的數先除以10,再除以100.0。
2樓:匿名使用者
可以肯定的告訴你,你找的答案肯定不對。
不信你輸2.225看一下,結果還是2.22原程式一直在對y處理,結果最後都沒有返給x。肯定不對。
為什麼可能會出現正確的結果,這個就很複雜了,要從浮點的儲存說起了。
我現在也還不是很瞭解。
浮點數在計算(特別是和整型混合計算時)、輸入和輸出的時候都可能有精度的丟失。
具體的我也不是很懂,你可以自行去研究一下。
比較完美的程式應該要用double型別,提高精度。
就算有返加給x,用float型別還是會出錯。很難理解。
#include
void main()
x=(double) y/1000;
printf("該實數,四捨五入保留兩位小後是%.2lf\n",x);}
3樓:匿名使用者
#includ
void main()
/*應該這樣就ok了。
4樓:
可以給你介紹實現方法。當然,如果你需求**,也可以寫給你。
如何用c語言將一個實數內部精度四捨五入到小數點後第二位
5樓:自我程式設計
#include
int p10(int m);//求10的次方double rounding(double n,int w);//小數四捨五入,引數w:精確到第幾數
int main()
return 0;
}double rounding(double n,int w)//小數四捨五入,引數w:精確到第幾數
int p10(int m)//求10的次方{int i,sum=1;
for(i=0;i
6樓:匿名使用者
利用取整截斷小數部分的特性來實現:
float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中儲存的數為x的保留2位小數的結果
7樓:匿名使用者
正數 x 四捨五入的技巧:
x --> (int)(x+0.5)
當 x=n+r, 0<=r<1,
若 0<=r<0.5, 則r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 則1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1
關於c語言讀入資料的問題,高手進
1.用輸入控制結束 比如說輸入兩個0即為結束 在迴圈裡面的開頭加上if x 0 y 0 break 2.用scanf控制 scanf的返回值是讀取成功的個數。所以,也可以輸入字元型作為結束 如果想不靠外面的輸入,也不靠內部的計數,總要有個結束條件吧?如果想不影響系統,我的意思是兩種辦法都可行,重點是...
c語言程式 從資料檔案中讀入資料到陣列
刺友互 1 首先讓我們新建一個class類。2 書寫main方法。3 讓我們在c盤根目錄下新建一個txt文件,內容為 test 4 然後讓我們接著寫 首先建立一個file物件。5 然後建立一個stringbuilder物件,用於儲存讀取的內容。6 接下來,我們用bufferedreader類來進行讀...
用c語言,不是c從鍵盤中輸入字串,然後按照下面要求輸出新字串
include stdio.h include string.h include malloc.h void insert char a int main include include include void insert char char int int main printf n d n ...