浮點型輸出時小數的個數有時是一位有時是六位

2021-05-20 07:11:48 字數 6126 閱讀 7185

1樓:匿名使用者

預設是來6位輸源

出時可以控制bai

保留的du位數如

zhidaofloat sum=1.23456;

printf("%f\n",sum);

printf("%.2f\n",sum);輸出為1.234560 1.23

2樓:匿名使用者

如果有無用的0就不顯示

c語言有3位小數的浮點型數字輸出後怎麼最後一位會多出一個1?

3樓:匿名使用者

浮點數在儲存的時候 是近似值

所以 在列印的時候多一點 少一點 都是正常的於是 在程式設計的時候,一般不會用%f 而是取一定位數,比如 %.3f 保留三位小數。

如果你要要求前六位都是完全精確的值,那麼可以使用double注意 輸出的時候用%lf

4樓:匿名使用者

浮點型預設的就是6位小數。如果你想輸出三位小數的話

就把你原句中printf("%f",a[i]);改為printf("%.3f",a[i]);

注意那個點

c語言中%f表示的是什麼,為什麼有時小數點後保留6位,有時小數點後保留1位

5樓:匿名使用者

printf("%f", fval ); //這是浮點預設輸出格式,小數點保留6位

printf("%.1f", fval ); //.1是說明,小數點保留1位,對其後的

資料進行四捨五入

printf("%.2f", fval ); //.2是說明,小數點保留2位,對其後的資料進行四捨五入,你想保留幾位,就用點幾

printf("%10f", fval ); //輸出寬度為10個字元,右對齊,前補空格,小數點保留6位

printf("%10.2f", fval ); //輸出寬度為10個字元,右對齊,前補空格,小數點保留2位

6樓:匿名使用者

printf("%.mf",fval)的舍入這裡,有個巨大的誤區,不是四捨五入,它採用的是四捨六入五成雙規則,詳情各位可參考百科。

四捨六入無成雙網頁連結

數值修約網頁連結

c語言中輸出時怎樣控制小數點後的位數,請舉例說明保留1、2、3、4位小數等等,謝謝

7樓:凌亂心扉

舉例說明如下:

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;

8樓:匿名使用者

我們在輸出語句上加如0.就行了,比如printf("%0.2f",a); 就是保留2位.

上**#include

int main()

再上結果圖:

擴充套件資容料:小數在計算機中的儲存:

對於浮點型別的資料採用單精度型別(float)和雙精度型別(double)來儲存,float資料佔用 32bit,double資料佔用 64bit.其實不論是float型別還是double型別,在計算機記憶體中的儲存方式都是遵從ieee的規範的,float 遵從的是ieee r32.24 ,而double 遵從的是r64.

53。無論是單精度還是雙精度,在記憶體儲存中都分為3個部分:

1) 符號位(sign):0代表正,1代表為負;

2) 指數位(exponent):用於儲存科學計數法中的指數資料,並且採用移位儲存;

3) 尾數部分(mantissa):尾數部分

9樓:靠名真tm難起

%nf 即輸出的bai

數字佔dun位 當原數字位數zhi大dao

於n時原樣輸出,原數字位數小於回n時輸出數字左端補上空答格,比如原數字為a=1.23456;n為4時輸出為1.23456,n為9時輸出為(空格空格1.23456)

10樓:陳昇富你好

#include

void main()

以此類推權

你說的n指輸出的資料共佔n列

11樓:黃

n是你需要保留的多少位小數的位數,a為變數。比如:

float a=3.14159;

printf("%3f",a);

輸出的結果為:3.141

12樓:匿名使用者

一。%nf 即輸出的數

自字佔n位 當原數字位數大於n時原樣輸出,原數字位數小於n時輸出數字左端補上空格,比如原數字為a=1.23456;n為4時輸出為1.23456,n為9時輸出為

(空格空格1.23456)

二。%n.mf 即輸出總共佔n位其中有m位小數 如a=1.23456 用%4.2f輸出為1.23如果用

%5,1f輸出為123.4即長度為5小數為1!這裡也有當原數字長度小於n時左端補空格這個規則!

還有就是當n前面有個負號時即%-nf或%-n.mf時就右端補空格!

13樓:手機使用者

地址單元而定

#define uchar unsigned char#define uint unsigned intuchar xdata xram _at_ 0xff00[4];//指定外部儲存地址

uchar data1[4]; //你先把你的四位數每位單獨分離出回來存到這個4成員陣列答

void main(void)}

14樓:匿名使用者

保留1位小數 printf("%.1f",a);

保留2位小數 printf("%.2f",a);

保留3位小數 printf("%.3f",a);...

c語言 執行結果中為什麼雙精度實型只輸出小數點後六位

15樓:匿名使用者

在c語言中,輸出double型別(雙精度實型)以及float型別(單精度實型)時,預設輸出6位小數。

比如這樣的版**:

double a = 1;

printf("%lf\n", a);

輸出會是

1.000000

但是權有時六位會顯得很長,沒必要。比如計算平均分,一到兩位小數就足夠了。

可是有時六位又不夠,需要更多位小數,比如計算高精度平方根。

這時可以用printf的格式控制。

如果要輸出n位小數,那麼可以用%.nlf的格式。其中n為數字。

如要輸出10位小數,那麼

printf("%.10lf\n", a);

即可類似的輸出1位小數

printf("%.1lf\n", a);

16樓:匿名使用者

樓上的回答是對的,printf要求你輸出格式,預設6位小數,你可以指定輸出幾位

17樓:匿名使用者

printf("%lf",p);

是一般輸出形式預設是 6位吧

你 試試

printf("%.10f",p);

也許就 可以了

18樓:匿名使用者

你可以自己設定輸出精度的

printf("%.nf",p); n為你的精度

如:printf("%.6f",p); //輸出為小數點後6位

19樓:匿名使用者

只輸出六位小數,這是預設的,可以改變,如:printf("%6",d)

c++中取出一個數的小數部分有幾種方法

20樓:牽著你的手

有一種方法

bai,如du

下:zhi

float f; //假設要

處理這個數dao

回float t = f - (int)f; //小數點前變成0了答while ( t > 0 )

21樓:奈金蘭郝儀

具體的不好說

因為bai方法是想du

出來的.想法是可zhi

以創造的.

通常的做法就dao是減去整數部專分

double

k=???;

cout<從浮點到整數的類屬型轉換是直接截去小數部分.(long)k的結果是k的整數部分

22樓:

具體的自不好說

因為bai

方法是想出來的du.想法是可以創造的.

通常的做法就是減去zhi

整數部分dao

double k=???;

cout<對於從浮點到整數的型別轉換是直接截去小數部分.(long)k的結果是k的整數部分

23樓:

運用取整bai就可以了,如:du

double d=1.234

d-=(int)d;

補充問題zhi:

(1)這些都dao是float在計算機裡的精回度問題,精度問題一般是答沒辦法解決的。但顯示的時候可以調整一下。

如:printf("%.2f",a);那就兩位小數了。

一般程式設計的時候最好用double(float太糟糕了),然後在空間不夠用,並且精度又沒有高要求的時候,把double換成float。

(2)沒錯,就是六位。不過它內部有一位保留位,是用於內部精度控制的。

24樓:匿名使用者

如果整數部分和小copy數部分在c++基本型別可表示的範圍之內,那麼可以int k = ***;

double k_p = k - int(k);

如果有一部分不在可表示的範圍之內,那麼就用分割法,以小數點 . 為關鍵碼,查詢小數部分,存入在一個陣列內。

25樓:匿名使用者

除1.000000取餘即可以.

vc語言中的%f在輸出的時候是小數點後面需要寫幾個0啊

26樓:陳冠鋼

一般如果不作設定,會輸出小數點後6位。

不需要規定寫幾個零。可內

以自定義輸出小容數點後幾位格式如下:

#include

void main()

結果:1.22

1.222222

兩位小數,保留一位小數的近似值是60,這個兩位小數最大

是這個兩位小數最大值是6.4,最小值是5.5 根據四捨五入原則最大值是6.04最小值是5.95 應該是最小為5.95最大為6.04吧 這個題目本身有兩個小問。首先是看最大值的問題,保留一位近似值為回6.0兩位小數最大應答該是十分位即小數點後第一位為4,這樣4舍,可以取到零,也就是說,最大為6.4.最...

小數點的左邊第一位是什麼位,右邊第一位是什厶位 小數點右邊第

小數點的左邊第一位是個位,右邊的第一位是十分位,第三位是千分位.如果幫助到了您,小數點左邊第一位是什麼,右邊第一位是什麼,右邊第三位是什麼 小數點左邊第一copy位是個位,右邊第一位是十分位,右邊第三位是千分位。小數點的前面是整數部分,從右至左依次為 個位 十位 百位 千位 萬位 小數點的後面是小數...

兩個一位小數的乘積四捨五入後是,兩個一位小數的乘積四捨五入後是

兩個一位小數復的積 四捨五入制 後是25.2,這兩個的小數的十分位都是4.這兩個小數的乘積在 四捨五入 前是 25.16 分析 兩個一位小數的積是兩位小數,四捨五入後為25.2,則積的最大值為25.24,最小值為25.15,積的範圍為 25.15 25.24 這兩個的小數的十分位都是4,0.4 0....