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樓:匿名使用者
浮點數精度不準確,不能對浮點數進行精確的比較操作,如要一定要用浮點進行比較,可用
fabs(n-0.0)<1.0e-3; 保證在精度範圍;
3樓:匿名使用者
#include
#include
#include
using namespace std;
void main()
c++中double型數值計算結果為0為什麼輸出的不是0?
4樓:龍__鳳
#include
#include//加上標頭檔案
using namespace std;
void main()
5樓:匿名使用者
這是由於double型別的精度引起的。
在c/c++中,float和double型別,被稱為浮點型。
浮點型是c/c++中用來儲存實數的。而儲存的值,並不是實際值,而是近似值。
即,double型別和float型別儲存的值均不是準確值,而是一個和準確值接近的值。
這樣,在計算中,就會有精度缺失的情況出現,運算越多,這個精度缺失出現的概率越大。
當經過大量計算後,就可能出現結果與真實結果偏差比較大的情況,也就是實際獲得的結果並不準確。
6樓:匿名使用者
#include
#include
using namespace std;
void main()
7樓:匿名使用者
cout<< (fabs(n-0.0)<1.0e-3)< c++,用double型變數進行運算,結果應該為0,但是輸出是—0.000000,我考慮應該是do
50 8樓:gta小雞 定義一個極小的量作為閾值,當浮點型減去其強制轉換後的整型的絕對值小於這個閾值時,認為浮點型值等於該整型。例: #define zero 1e-12 double example; if(example-(int)example1-zero) example=(int)example+1; 9樓:匿名使用者 double顯示就是帶小數的,不會顯示0的,自己控制輸出格式呀。你的考慮那個叫浮點型的舍入誤差 10樓:黑貝天枰 強制型別轉換為int型 c++中定義的變數為double型,為什麼輸出的數值總是不正確這是為什麼,**如下 11樓:山水阿銳 您好,您試試這個: sum = sum+(1.0/num); joychen_ 如果不成,再試試: num的型別改為double yy_神_eeee 12樓:yy_神 num的型別改為double c++中double型別的0乘以負數輸出為-0,為什麼?詳情如圖 13樓:匿名使用者 好吧,這道題太讓我好奇了,一看沒人回答,我自己試了一下。 一樣的程式,我用vc6.0輸出0。。。我就不截圖了。 看來和編譯器有關。。。 14樓:匿名使用者 我不能肯定,但是我認為這取決於編譯器的實現,他估計是看見乘法就直接就進行符號位乘法,即正正為正、負負為正、正負為負,以此修改結果的符號位,輸出時檢視符號位,如果符號位為1,則必定輸出「-」,這樣就會出現你看到的情況了,當然只是我的猜想。。。換句話就是我認為這是程式設計的結果。 c++ 中double資料的一個表示式,計算結果為0,但是用cout輸出為8.88178-016,這是為什麼啊?怎樣才能顯示0 15樓:芭拉絕舞 這個結果很好啊,無限趨向0了,如果你要好看一點兒,可以int強制轉換一下 16樓:匿名使用者 應該是你最初沒有給這個double資料賦初值吧,如沒有賦初值的話,你的運算結果就很可能是上面的結果。因為在你定義這個double資料的時候(未賦初值時)此時的這個資料是個隨機數。 17樓:油哥來了 你把你寫的**發過來。 c++程式中為什麼用cout輸出float或double型的資料,螢幕上不是小數而是整數呢? 18樓:匿名使用者 cout跟printf是不同的,cout輸出float或double,是會將小數點後非有效數字的0去掉的,而printf裡面以%f輸出規定是以6位小數輸出,不管是不是有效數字 19樓:匿名使用者 樓主,ansi c++裡一個浮點型若是小數部分為0,直接輸出必然是不帶小數點的。 現在,例如 float a=3; 你若想輸出3.0,輸出**要這樣寫: cout << showpoint << a; 您好 本題目的問題是問為什麼這兩個相等 我認為,確切的回答如上。分子分母同時 x 2,分式值不變。是否幫助到您?祝您學習進步 把右面的式子通分以後就能夠得到跟左面的一樣了,這是很簡單的通分問題。為什麼這兩個相等?仔細看圖上紅色圓圈的位置,圈出來的 小正方形 其實並不是正方形。所以,兩個圖形的面積並不... bai double在這裡是指將變數 dui和變數s定義zhi為雙精度實型變數。dao也就是說 賦給這回兩個變數的值將答以雙精度實型格式儲存在記憶體中 類似的 int 整型 long 長整型 float 單精度實型 double是浮點類,可以用來宣告浮點類變數 double name 也可以加上限定... 這些基礎問題msdn上都有的 左移運算子 將第一個運算元向左移動第二個運算元指定的位數。第二個運算元的型別必須是一個 int 或具有向 int 的預定義隱式數值轉換的型別。弄個0分浪費大家時間,問問題的誠意和自學能力有待提升 左移運算子,相當於2進位制的1左移x位,應該是1除以2的x次方 函式呼叫 ...請問為什麼這兩個相等,為什麼這兩個相等
c中double應該怎麼用,c中的double是什麼,有什麼作用,煩舉一例。
c中兩個小於號在一起神馬意思C中兩個小於號在一起神馬意思?