C 中double型數值計算結果為0為什麼輸出的不是

2021-03-11 04:51:56 字數 664 閱讀 8596

1樓:庾連枝酒錦

1、因為double型別都是1.*********(若干個0和1,二進位制)乘以2的若干次冪來表示一內個數,所以,和十進位制的小數勢必不能夠容一一對應,因為位數有限,總要有一個精度(兩個數之間的實數是任意多的,但是很明顯double不可能表示任意多的數),那麼double的0就只是用一個近似0的數來表示的

2、浮點數比較相等的時候,不能用==比較,要採用if(abs(x-y)<=epsilon)的方式,其實epsilon是預定義的很小的數,也就是要求的精度,比如類似1e-6,也就是說,比較兩數之間的差是否在可接受的精度範圍內。

3、和0比較,就是if(abs(x)<=epsilon),絕對值小於要求精度,就可以認為是0.

2樓:樑蘭英邰乙

這是由於double型別復

的精製度引起的。

在c/c++中,float和double型別,被稱為浮點型。

浮點型是c/c++中用來儲存實數的。而儲存的值,並不是實際值,而是近似值。

即,double型別和float型別儲存的值均不是準確值,而是一個和準確值接近的值。

這樣,在計算中,就會有精度缺失的情況出現,運算越多,這個精度缺失出現的概率越大。

當經過大量計算後,就可能出現結果與真實結果偏差比較大的情況,也就是實際獲得的結果並不準確。

c 中定義的變數為double型,為什麼輸出的數值總是不正

您好,您試試這個 sum sum 1.0 num joychen 如果不成,再試試 num的型別改為double yy 神 eeee num的型別改為double c 為什麼定義整型變數輸入一個字元之後,輸出為0,如下 c 裡的有格式輸入用 cin 比較麻煩,int 型只能輸入 10進位制常數 預設...

達式312的計算結果是若a1b2c

第一個表示式的結果是3,本來是1 2 0.5,但由於是整型數除以整型數,所以1 2 0 a b為0,由於是與關係,所以後面的c 就沒有執行,c還是3 兄弟,你這自是c語言的題嗎?如果是的話,第一個空為3,第二個空為3 第一個空解答 1 2,因為1和2皆為整數,所謂1 2的結果為0第二個空解答 運算有...

若a是非零自然數,下列算式中的計算結果最大的是

假設baia 1,a 5 8 5 8 0.625 a du5 8 8 5 1.6 a 3 2 2 3 0.6 3 2 a 3 2 1.5 因為zhi1.6 dao1.回 0.6 0.625,所以a 5 8 3 2 a a 3 2 a 5 8 則a 5 8 計算結答果最大,故選 b.答案應填b。因為a...