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 要去掉...