① c語言中 小數點前、後面的零怎麼控制輸出 比如,0.001-變為.001;200.00變為200;200.1不變。
你第一個是0.001- 是嗎 變為 .001
第二個是200.00變為200
第三個是200.1 不變?
你到底是什麼規此姿型律? 每次規律都不一樣嗎?
你至少森猜該給個規則吧
比如
第一個 需要小數點後的三位 小數冊襲點前的不要
第二個 只要小數點前的
第三個 不變
思路就是很簡單的 轉換成字元串 根據需求 截取小數點前後指定的位數
你如果能把你的規則說清楚 我可以給你寫出來
② C語言中如何處理小數
1.C語言的小數都是浮點數。浮點數屬於floating binary point types,也就是說都double型的數值在相加減的時候,會將數值轉換成二進制的數值如10001.10010110011這種表示發再做相加減,但是在轉換成二進制代碼表示的時候,存儲小數部分的位數會有不夠的現象,即無限循環小數,這就就會造成小數相加後結果會有微差距。
2.浮點數是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法。
3.浮點計算是指浮點數參與的運算,這種運算通常伴隨著因為無法精確表示而進行的近似或舍入。
一個浮點數a由兩個數m和e來表示:a = m × b^e。在任意一個這樣的系統中,我們選擇一個基數b(記數系統的基)和精度p(即使用多少位來存儲)。m(即尾數)是形如±d.ddd...ddd的p位數(每一位是一個介於0到b-1之間的整數,包括0和b-1)。如果m的第一位是非0整數,m稱作規格化的。有一些描述使用一個單獨的符號位(s 代表+或者-)來表示正負,這樣m必須是正的。e是指數。
③ C語言中輸出時怎樣控制小數點後的位數,請舉例說明保
#include<stdio.h>
int main(void){
float i = 12.0;
printf("%f\n", i);
printf("%.1f\n", i);
printf("%.2f\n", i);
printf("%.3f\n", i);
printf("%.4f\n", i);
printf("%.5f\n", i);
printf("%.6f\n", i);
printf("%.7f\n", i);
printf("%.8f\n", i);
printf("%.9f\n", i);
printf("%.10f\n", i);
printf("%.11f\n", i);
printf("%.12f\n", i);
return 0;
}運行結果:
12.000000
12.0
12.00
12.000
12.0000
12.00000
12.000000
12.0000000
12.00000000
12.000000000
12.0000000000
12.00000000000
12.000000000000
printf("%f\n",
i);在普通輸出控制格式字元的%和f中間加「.#」(其中#為小數點位數)
④ C語言如何控制保留小數位數
int postfix = 0;
char format[10] = {0};
float a = 3.14159265;
scanf("%d", &postfix); //讀入需要保留的小數位數
sprintf(format, "%%.%df", postfix); //比如輸入3,那麼format里就是"%.3f",也就是保留三位小數
printf(format, a);
⑤ 在c語言中如何指定精確到小數點後任意位數
Note1:
正數 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
Note2:
舉例來說: 若正數要依捨去法精確到小數點後第二位
x --> (int)(x*100)/100 就好.
例如 3.2794 --> (int)(327.94)/100=327/100=3.27
Note3:
舉例來說: 若正數要四捨五入精確到小數點後第二位
x*100 四捨五入再除以100 就好
也就是 (int)(x*100+0.5)/100
⑥ C語言中輸出時怎樣控制小數點後的位數
舉例說明如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main( void )
{
const double value = 12.3456789;
cout << value << endl; // 默認以6精度,所以輸出為 12.3457
cout << setprecision(4) << value << endl; // 改成4精度,所以輸出為12.35
cout << setprecision(8) << value << endl; // 改成8精度,所以輸出為12.345679
cout << fixed << setprecision(4) << value << endl; // 加了fixed意味著是固定點方式顯示,所以這里的精度指的是小數位,輸出為12.3457
cout << value << endl; // fixed和setprecision的作用還在,依然顯示12.3457
cout.unsetf( ios::fixed ); // 去掉了fixed,所以精度恢復成整個數值的有效位數,顯示為12.35
cout << value << endl;
cout.precision( 6 ); // 恢復成原來的樣子,輸出為12.3457
cout << value << endl;
}
⑦ C語言中輸出時怎樣控制小數點後的位數,請舉例說明保留1、2、3、4位小數等等,謝謝
在C的編程中,總會遇到浮點數的處理,有的時候,我們只需要保留2位小數作為輸出的結果,這時候,問題來了,怎樣才能讓cout輸出指定的小數點後保留位數呢?
在C語言的編程中,我們可以這樣實現它:
[cpp]view plain液敗
printf("%.2f",sample);
- 在C++中,是沒有格式符的,我們可以通過使用setprecision()函數來實現這個需求。
cout<<"a="<<setprecision(2)<<a<<endl;
- 這時候,我們會發現,如果a的值為0.20001,輸出的結果為納弊a=0.2,後面第二位的0被省略了。
cout.setf(ios::fixed);
cout<<洞埋族"a="<<fixed<<setprecision(2)<<a<<endl;//輸出a=0.20
- 這樣,我們就可以得到0.20了。當然,如果想要關閉掉補0,只需要對fixed進行取消設置操作。
cout.unsetf(ios::fixed);
cout<<"a="<<setprecision(2)<<a<<endl;//輸出a=0.2
- 我們的輸出結果就又變回a=0.2了。
#include<iostream>
#include<iomanip>
usingnamespacestd;
intmain()
{
floata=0.20001;
cout.setf(ios::fixed);
cout<<"a="<<fixed<<setprecision(2)<<a<<endl;//輸出結果為a=0.20
cout.unsetf(ios::fixed);
cout<<"a="<<setprecision(2)<<a<<endl;//輸出結果為a=0.2
return0;
}
想要使用setprecision()函數,必須包含頭文件#include <iomanip>。使用方式如下:
[cpp]view plain
如果我們想要讓它自動補0,需要在cout之前進行補0的定義。代碼如下:
[cpp]view plain
[cpp]view plain
參考代碼
[cpp]view plain
⑧ C語言中輸出時怎樣控制小數點後的位數,請舉例說明保留1、2、3、4位小數等等,謝謝
控制小數位數就是通過輸出格式說明符來規定的
舉例說明如下:
1、float f1=3.1415926;
2、float f2=1234.1415926;
3、float f3=124.1;
4、printf("%3.4f",f1);//輸出結果為:_ _ 3.1416(_表示空格)
5、printf("%3.4f",f2);//輸出結果為:1234.1416
6、printf("%3.4f",f3);//輸出結果為:124.1000
printf("%3.4f",f);中的3是控制f的整數部分按3位的固定位寬輸出;4是按四捨五入的准則保留4位小數。
註:如果整數部分不足3位,則在前面補空格,超過3位,則按實際位數輸出;如果小數部分不足4,則在後面補0。
如果存儲比精度更重要,請考慮對浮點變數使用float類型。相反,如果精度是最重要的條件,則使用double類型。
浮點變數可以提升為更大基數的類型(從float類型到double類型)。當您對浮點變數執行算術時,通常會出現提升。此算術始終以與具有最高精度的變數一樣高的精度執行。例如,請考慮下列類型聲明:
float f_short;double f_long;long double f_longer;f_short=f_short*f_long;
在前面的示例中,變數f_short提升到類型double並且與f_long相乘;然後,結果舍入到類型float,然後賦給f_short。
在以下示例中(使用前面示例中的聲明),將以浮點(32位)精度對變數執行算術;結果隨後將提升到double類型:
f_longer=f_short*f_short;
double f_long;
long double f_longer;
f_short=f_short*f_long;
在前面的示例中,變數f_short提升到類型double並且與f_long相乘;然後,結果舍入到類型float,然後賦給f_short。
在以下示例中(使用前面示例中的聲明),將以浮點(32位)精度對變數執行算術;結果隨後將提升到double類型:
f_longer=f_short*f_short;
⑨ C語言如何用變數控制小數位數
樓上解法怎麼處理123.456-->123.456000
標准做法是這樣的
說明:小數點「.」後面的「*」表示輸出位數,具體的數據來自參數表。
printf格式字元串中,與寬度控制和精度控制有關的常量都可以換成變數,方法就是使用一個「*」代替那個常量,然後在後面提供變數給「*」。
例子
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.*lf\n",c,a*1.0/b);
return 0;
}