c中相等的兩個double數值相減為什麼輸出的不是

2021-03-07 06:28:02 字數 2967 閱讀 2489

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,分式值不變。是否幫助到您?祝您學習進步 把右面的式子通分以後就能夠得到跟左面的一樣了,這是很簡單的通分問題。為什麼這兩個相等?仔細看圖上紅色圓圈的位置,圈出來的 小正方形 其實並不是正方形。所以,兩個圖形的面積並不...

c中double應該怎麼用,c中的double是什麼,有什麼作用,煩舉一例。

bai double在這裡是指將變數 dui和變數s定義zhi為雙精度實型變數。dao也就是說 賦給這回兩個變數的值將答以雙精度實型格式儲存在記憶體中 類似的 int 整型 long 長整型 float 單精度實型 double是浮點類,可以用來宣告浮點類變數 double name 也可以加上限定...

c中兩個小於號在一起神馬意思C中兩個小於號在一起神馬意思?

這些基礎問題msdn上都有的 左移運算子 將第一個運算元向左移動第二個運算元指定的位數。第二個運算元的型別必須是一個 int 或具有向 int 的預定義隱式數值轉換的型別。弄個0分浪費大家時間,問問題的誠意和自學能力有待提升 左移運算子,相當於2進位制的1左移x位,應該是1除以2的x次方 函式呼叫 ...