C語言中的小數問題,我看到書中有的程式用到除法時,如1 0 2 a b c ,分子是精確到小數點後一位

時間 2021-09-11 22:33:38

1樓:

1.0/2*(a+b+c),

上式中的分子1.0並不是精確到小點後一位,而是告訴編譯器此處是浮點運算,而不是整數運算。

如上式如果變成1/2*(a+b+c),那麼首先在計算1/2時,編譯器將之看成是整數運算,這時,結果不是0.5,而是0,所以1/2*(a+b+c)的結果為0

至於-b/(2*a),其結果要看b和a兩個變數的型別,如果b是浮點型(float或者double)其結果就是帶小數的,如果a,b都是整型數,那麼結果就只能是這個式子所求出結果的整數部分。

2樓:匿名使用者

c語言中的除法:

c = a/b;如果a,b都是int型,那麼c就取整,捨去小數,比如:c = 6/3 ,那麼c=2;而 c=1/4則c=0。因為多數機器採用的是「向零取整」。

即 c = -5/3 ,c= -1.  正負數都是向零靠攏的。

c = a/b;如果a,b中至少有一個是實數型,那麼c就精確取值。

至於什麼時候該精確的問題,得看具體的演算法需求。也可以使用強制型別轉換來滿足演算法需求。

3樓:技術螞蟻

只要式子中有一個是double型別的,就會精確。比如1.0/2*(a+b+c),裡面的1.0是double,所以會精確。又如-b/(2*a),裡面所有的都是int所以不會精確

4樓:試倩悲風催淚

這個沒有嚴格的要求吧,主要是根據個人需求而定,可以用輸出格式控制符來控制,如%3.2f ,就表示輸出列寬為3精確到小數點後兩位,有的書小數點也算一位。

編寫程式,求一元二次方程ax2+bx+c=0的根(保留2位小數)。係數a、b、c為浮點數,其值在執行時由鍵盤輸入

c語言中要寫表示s=(a+b+c)/2,為什麼要寫成s=1.0/2*(a+b+c);而不寫成s=(a+b+c)/2;呢?

5樓:匿名使用者

s=(a+b+c)/2

是整數操作

例如:1/2結果是0,3/2結果是1。

s=1.0/2*(a+b+c)

為浮點數操作

1.0/2結果是0.5。

c語言問題 在計算三角形面積時s=1.0/2*(a+b+c)中 為什麼非要用1.0 而用1得不出結果

6樓:匿名使用者

看看書就知道了,c語言中1/2是等於 0 的,而不是等於0.5

而且這個上課你們老師是應該強調的,c語言中int型的數相除是不會出現浮點數的

7樓:匿名使用者

因為定義的時候,數字型別用的是float型別而不是int型別,int型別是指整數,float型別是指浮點數(就是有小數點的)

8樓:匿名使用者

若啊,a,b,c都是整型的話,用一除就得出s是一個整型數,這與答案誤差太大,只有用1.0才能得出浮點數型

在c語言中(1/2)*(a+b)*h和 (a+b)*h*(1/2)為什麼結果不一樣?第一個結果是0,第二個就不是.

9樓:窗邊消失的糖

你是來不是a,b取的都是整形(int型別)?這自是(1/2)*(a+b)*h中先算(1/2)*(a+b)。如果這個數小於0.

5就會自動四捨五入變為零。所以再乘h還是零。而後面一種先算(a+b)*h再除以二。

所以不為零

10樓:匿名使用者

結果是一樣的。

因為 (1/2)=0,一個式子不論是先乘 0 還是後乘 0都一個結果。

我剛才用 vc2003執行後驗證,結果一樣。

你的**是什麼?能不能發給我學一下?

11樓:匿名使用者

完整的**才好說,c語言如果無運算子的優先順序式子是從左向右算,變數為整型,則只存整數位,小數位去掉,9.9則為9。

12樓:曾經風情

a,b,h是哪個型別的?整型?

問大家一道c語言題,若表示式(a+b)>c * 2 && b !=5 || !(1/2)中,a b 20

13樓:匿名使用者

||||

(a+b)>c * 2 && b !=5 || !(1/2)=(3+4)>2 * 2 && b !=5 || !(1/2)

根據運算優先順序完成以下步驟運算:

(3+4)>2 * 2 && 4 !=5 || !(1/2)

=7>2 * 2 && 4 !=5 || !0

=7>2 * 2 && 4 !=5 || 1

=7>4&& 4 !=5 || 1

=1&& 4 !=5 || 1

=1&& 1 || 1

=1 || 1=1

14樓:匿名使用者

|有||有短路規則,左邊的為真就不會進行右邊的判斷了,所以cad在c語言中沒見過,c選項後邊應該是指標(&a就是指標型別了)應該選d吧!我的機器上是這樣的。要麼你程式沒有寫完。

「(a=4*5,a*2)」,a+6"你是原表示式嗎,怎麼中間有一個」。因為巨集之後是這樣的:n=(n*n+(n+1)*(n+1))-2;這也是巨集不同於函式的點a=++a+++b;a=1+1=2;b進行的++等於1;c沒變為0。

第二個a=1+(-1)=0;b進行了--為0,c進行了--為-1;對於表示式前置後置的++--操作都要表現出來

在c語言中int a=2,b=3,c=6,m; (a=c

15樓:匿名使用者

(a=c

(a&&!c)的值為0。很簡單

b/a*2.0的值為6.

所以總體是6.

個人見解,沒有跑程式驗證

16樓:

你確定你對這兩個左值賦值沒問題?

a&&!c=0;

b/a*2.0=2;

c語言中有無符號型別的輸出問題,C語言中有無符號型別的輸出問題

太陽雨 因為short和int型佔的位元組數不一樣,一般來說,int佔四個位元組,short佔兩個位元組 不同的系統分配的位元組數不一樣 他們是以二進位制數存放在記憶體中的。你把 1賦給short型的a,輸出的時候,只取了後面的兩個位元組的內容,那個負號在前兩個位元組中。你把 1賦給int型的a時,...

C語言中關於“有效數字”的問題,在c語言中,有效數字和有效數位怎麼解釋?

當你輸入2.2e2時a 4.84,而輸入2.2e 2時a 0.20661157024793388429752066115702.它們的是float型,放在記憶體中是 2.2e2 01000011 0,1011100 00000000 00000000,2.2e 2 00111100 1,010010...

C語言中的問題,幾個C語言中的問題???

將憶梅僑寶 getchar和putchar是c語言中的函式 getchar從鍵盤讀入字元 putchar在螢幕上顯示字元 吳幼珊佘溶 getchar和putchar是c語言中的函式,叫作標準字元輸入輸出函式,這裡的標準表示輸入是從標準裝置輸入的,即鍵盤,輸出是從標準裝置輸出的,即顯示器。這兩個函式包...