C語言小數點後面的,C語言小數點後面的

時間 2022-03-08 15:45:12

1樓:匿名使用者

.1f為什麼不能用,程式設計這種東西就要求靈活,只要能實現想要的效果,什麼方法都無所謂.難道別人要打你,你能說我沒學過打架,你不要打我麼

除了.1f,還可以用%g,%g是在科學計數法和普通方法之間自動選擇最短的形式輸出.

當然,將數放到字串中也行,算是個比較"笨"的方法,tyoukill的方法也有點問題,應該是從字串的右邊開始,找到第乙個非'0'的字元停下,然後左邊開始輸出,到這個字元為止.

2樓:欽玉蘭萊午

你的變數

a,b,d

定義為整型,也就是只能儲存整數

變數c定義為單精度的浮點型,也就是可以儲存小數,預設儲存六位小數,不足的用0補齊

如果要讓變數c不儲存小數,只需要改成

printf("這兩個數的商為:%.0f\n"

,c);

及可.0表示儲存0位小數

用c語言浮點輸出時,如何讓小數點後沒用的0不顯示。

3樓:匿名使用者

用%g格式符就可以了

例如:float f=3.14;printf("%g",f);

4樓:匿名使用者

printf("%.0lf", 2.344); //輸出為2 double型別

printf("%.0f", 2.344); //同上. float型別

c中如何使輸出的值小數點後最末位0捨去?

5樓:匿名使用者

如果你僅僅是要最後乙個0去掉,很麻煩。不是的話,就用g格式。

g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。

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

僅僅要去掉最後乙個0,方法樓上有**了。麻煩 - -

6樓:匿名使用者

#include

int main()

7樓:我有赤兔

float f=3.141592653,x;

x=f%1;// x就是小數點後面的東東

char a=(char)f; /把浮點數轉成字串int i=2;/從a[2]開始才是小數的第一位char b=a[i];

while(b!='0')// 每個字元逐個檢查,直到發現0printf("%.(i-2)",f);//之所以-2是因為字串的第乙個字元是 0 第二個字元是 。

這個辦法真的很麻煩,可是你的要求也夠麻煩的。。。。

8樓:匿名使用者

float f = 3.123456

printf("%.1",f);

結果為3.1

printf("%.5",f);

結果為3.12346

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

9樓:陳冠鋼

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

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

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

#include

void main()

結果:1.22

1.222222

c語言 去掉小數點後面無效0

10樓:聽不清啊

printf("bmi:%g\n",c); -------不是%g¥n

printf("標準體重:%g\n",d);

這是沒有問題的。是你的程式中有錯,程式沒有編譯成功,仍舊執行舊的程式造成的。

11樓:匿名使用者

%x.yf x是整個數的位數,y是小數點後的位數也就是說你要0.20的話

float a=0.2;

printf("%.2f",a);

12樓:匿名使用者

printf 後輸出 %g就可以啦

c語言程式設計中怎麼自動去掉浮點數小數點後沒用的0。

13樓:會飛的小兔子

#include

int main()

擴充套件資料

c語言浮點數

浮點數的值等於尾數乘以 2^x。讀者應該注意,上圖是二進位制分數,因此 0.1表示 1/2。

為了方便理解,我們可以將其與十進位制的小數對應起來:十進位制的 0.1 等於 1*10^-1,所以二進位制的 0.

1 等於1*2^-1,也即 1/2。

「尾數+指數」模式儲存浮點數可能有一點問題,例如:2x10^-1=0.2x10^0=0.

02x10^1,依此類推。同樣乙個數字可能有多種「尾數+指數」的表示方法,而同時兼顧多種表示方法勢必會造成巨大的浪費。

14樓:匿名使用者

可以通過%.xf或者%.xlf來限制,其中x是乙個整數;

如果保留一位小數x 為1,兩位為2;

以此類推;

注意%.xf的x的值不能大於7,由於float型別的精確度只有小數點後7位;

%.xlf的x的值不能大於15,double型別的精確度只有小數點後15為;

通過限制小數點的位數,去掉多餘的0;。

c語言中 double數字 以浮點輸出小數後面全部變為零的問題

15樓:s如詩如夢

您好,是因為double 型資料的有效位數(從左第乙個不為0的數開始數)為15位左右,所以其它的就不一定準確

16樓:聽不清啊

double(雙精度浮點數)使用 64 位(8位元組) 來儲存乙個浮點數。 它可以表示十進位制的15或16位有效數字。

而b=1234567890123456.123456;卻是包含有22位有效數字,所以,它是超出了資料的有效儲存範圍。

還有,double在輸出時,應該要用%lf格式符。

17樓:匿名使用者

計算機內部保留的數值,精度是有限的。不同的c語言版本可能有不同。

常見的某些版本中,情況如下(其中的「位」指二進位制的位):

float型:8位階碼,24位尾數;

double型:8位階碼,56位尾數。

階碼是用來表示小數點位置的,尾數則是表示有效數字的值。故double型有效數字最多保留56位。

故這種情況下,最低位的分辨能力,只能達到整個量程的2的56次方分之一。

如果資料本身,有更低位的小數,就只能捨入近似了。

而且我們知道,尾數還有正負兩種可能,故其絕對值的最大值,只能達到整個量程的一半。

更何況,絕對值不見得能達到最大(規格化後可以不小於最大值的一半)。

如此,最低位捨入形成的相對誤差,就會達到2的55次方分之一,至2的54次方分之一。

而如果用十進位制表示,2的55次等於36028797018963968,2的54次方等於18014398509481984。都是17位的數字。

換句話說,double型精度,如果對於17位的十進位制有效數字,其誤差就相當於最低位了。

因此,如果您輸入的資料有效數字更長,那麼17位之後,肯定沒有保留,已經不準確了。

而你的b=1234567890123456.123456;已經達到了22位,所以後幾位肯定是不准的。

當然,我上面說的精度,只是某些版本中的。也不排除有更高精度的版本?

18樓:**愛人醉紅顏

是因為你的b值位數太多了,把你的b值修改成位數少一些,如1234567890.123456,就不會有問題了!

19樓:匿名使用者

double只有15位的.你16位了

b=12345678901234.123456;

就可以了

為什麼c語言程式設計float算出來有很多0

20樓:

這不是「算出來」復的問製

題,是輸出函式printf的控制符用得不合適:%f的作用是按浮點型輸出,預設保留6位小數,不足6位的後面用0補齊。想要不輸出小數點後多餘的0,用%g控制就可以了,它是所謂緊湊型輸出,預設有效數字7位(連小數點)左對齊,在此範圍內,小數點的實際有效位是多少就輸出多少。

舉例**如下:

//#include "stdafx.h"//if the vc++6.0, with this line.

#include "stdio.h"

int main(void)

輸出如下圖:

21樓:匿名使用者

float表示是浮點數,輸出時應該有7位小數。要去掉應該用輸出控制符。

格式字元回

串(格式)

[標誌][輸出答最少寬度][.精度][長度]型別"%-md" :左對齊,若m比實際少時,按實際輸出。

"%m.ns":輸出m位,取字串(左起)n位,左補空格,當n>m or m省略時m=n

e.g. "%7.2s" 輸入china

輸出" ch"

"%m.nf":輸出浮點數,m為寬度,n為小數點右邊數字e.g. "%3.1f" 輸入3852.99輸出3853.0

長度:為h短整形量,l為長整形量

22樓:匿名使用者

浮點型有效位數是六位,你列印的時候就會精確到小數點後的6位,要用%.2f 格式控制輸出,

%.2f 就表示保留2位小數,%.3f 就表示保留3位小數 你試一下。

23樓:公尺嵐

小數點後面表示精度。就相當於數上保留到多少位,要表示出來。

24樓:金筆點龍

很多來0的話你應該輸出格式寫的自是 %f

如果要把多餘的0去掉的話換成 %g就可以了。

如果要精確到小數點後k位的話 換成 %.kf 就可以了。 比如 %.2f %.3f 分別是精確到小數點後兩位三位。

c語言如何精確小數點後指定位數,c語言如何控制小數位數

只能用陣列或者字串模擬除法運算來完成。否則一經超出最大長度 這個只能間接實現,可以用陣列儲存每一位數值。 風若遠去何人留 可以在輸出時,指定小數點後的有效位數,實現精確到若干位的效果。要精確到小數點後若干位,則資料型別為浮點型,可能為單精度 float 或雙精度 double 在c語言中,使用格式化...

小數點的意思是什麼,小數點的意義是什麼?

當測量物體時往往會得到不是整數的數,古人就發明了小數來補充整數 小數是十進分數的一種特殊表現形式。所有分數都可以表示成小數,小數中除無限不迴圈小數外都可以表示成分數。無理數為無限不迴圈小數。根據十進位制的位值原則,把十進分數仿照整數的寫法寫成不帶分母的形式,這樣的數叫 做小數 小數中的圓點叫做小數點...

小數點的變化規律,什麼是小數點的變化規律

1.小數點位置移動引起小數大小變化的規律 小數點向左移動一位 兩位 三位 這個數就縮小到原來的1 10 1 100 1 1000 小數點向右移動一位 兩位 三位 這個數就擴大到原來的10倍 100倍 1000倍 2.小數點右移,位數不夠時,要添 0 補位,小數點移動完後,整數最高位前邊的 0 要去掉...