c 中為什麼0 6賦值給double型會變成

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

1樓:金色潛鳥

這同編譯器有關。

計算機用2進位制,10進位制輸入轉2進位制存放運算,2進位制轉10進位制輸出,有截斷誤差和舍入誤差,看編譯器如何處理。

我的編譯器,沒問題, 0.599999999999999 處理成 0.600000000000。

例如:#include

using namespace std;

#include

#include

main()

-------------

執**況:

enter 0.6

0.60.600000

0.600000

enter 0.6

0.6x is 0.6

x is 0.6

2樓:匿名使用者

浮點數不是精確數值,只是近似數值。

根據ieee754國際標準,常用的浮點數有兩種格式

1. 單精度浮點數(single)

用來表示帶有小數部分的實數,一般用於科學計算。

佔用4個位元組(32位)儲存空間,包括符號位1位,階碼8位,尾數23位。其數值範圍為-3.4e38~3.

4e38,單精度浮點數最多有7位十進位制有效數字,單精度浮點數的指數用「e」或「e」表示。

單精度浮點數有多種表示形式:±n.n(小數形式) ±n e ±m(指數形式) ±n.n e ±m (指數形式)

如果某個數的有效數字位數超過7位,當把它定義為單精度變數時,超出的部分會自動四捨五入。

2. 雙精度浮點數(double)

用8個位元組(64位)儲存空間,包括符號位1位,階碼11位,尾數52位。

3樓:匿名使用者

float和double都不能保證把所有的實數都準確的存入計算機中。

4樓:匿名使用者

設定下double小數點後位數呢

5樓:匿名使用者

輸入要轉換為二進位制,計算機表示的是離散的數

6樓:匿名使用者

這個無所謂啦。。。重新編譯說不定就變0.60000了。。。這個精度無傷大雅~

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

7樓:龍__鳳

#include

#include//加上標頭檔案

using namespace std;

void main()

8樓:匿名使用者

這是由於double型別的精度引起的。

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

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

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

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

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

9樓:匿名使用者

#include

#include

using namespace std;

void main()

10樓:匿名使用者

cout<< (fabs(n-0.0)<1.0e-3)<

(c++)double型的資料,如何保留小數點後四位?

11樓:匿名使用者

在計算時,可以使用floor函式+0.5來實現四捨五入。

例如:double a = 13.45656789;

double b;

b = floor(a * 10000.000f + 0.5) / 10000.000f; /*保留小數點後四位*/

在輸出時,直接使用printf格式輸出實現保留小數點後四位。

例如:double a = 13.45656789;

printf("%.4f",a);    /*保留小數點後四位*/

12樓:匿名使用者

四捨五入 保留四位小數

#include

double a = 13.45656789;

double b;

b = floor(a * 10000.000f + 0.5) / 10000.000f; /*保留小數點後四位*/

13樓:大海中的漂泊船

floor(value)+floor((value - floor(value)) * 10000+ 0.5) / 10000; 防止double資料太大,乘以10000後溢位;

14樓:御風__弄影

#include

cout<

這就行了

15樓:

a=((int)a*10000)/10000

16樓:匿名使用者

cout<

cout<

17樓:成紅微生英飆

#include

#include

void main()

18樓:我真是瞎填的

c++格式怎麼變成c格式了

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

19樓:糖糖寳寳

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.

20樓:匿名使用者

浮點數精度不準確,不能對浮點數進行精確的比較操作,如要一定要用浮點進行比較,可用

fabs(n-0.0)<1.0e-3; 保證在精度範圍;

21樓:匿名使用者

#include

#include

#include

using namespace std;

void main()

c++ double型陣列 使用 的時候需要初始化嗎?

22樓:金色潛鳥

double 型陣列 不需要 初始化抄

,就可以使bai用,你可以隨時用它來du儲存數值,給它zhi賦值。

視窗銷燬的時候dao double型陣列 會自動消失,(如果是區域性量,在退出區域性域時便早已釋放)。不是動態分配的動態陣列,程式設計師不需要考慮釋放。

全域性量,double 型陣列 編譯器已自動初始化為0。

23樓:德克and德華

double a[10] = ;

這樣就把這個陣列的所有元素都初始化為0.0如果是像上面這樣建立的陣列,是不用手動釋放的只有new出來的才需要釋放,不過一般情況下沒必要new

24樓:喜歡姐姐的啊白

據我所知,double一般直接就建立了,不必初始化吧

double a[2];

這裡初始化,大概也就是賦值吧~

25樓:匿名使用者

初始化 是個好習慣,雖然不是必須的

c++中double型資料怎麼取整數部分,就是小數後面全變成0。

26樓:小小小小吃貨丫

1、首先,定

du義一個double型變數n,儲存取整

zhi的數dao值。

2、用ceil函式對實數5.78取整,取整後的數值儲存在變版量n中。

權3、輸出取整後的數值n。

4、執行程式,輸出的值為6,這是因為ceil是對實數向上取整。

5、接著,將ceil內的數更改為5.18。

6、執行程式,看到的結果還是6,說明ceil是向上取整。

27樓:匿名使用者

floor(x)是向下取整函式,如果是負數的話,這個函式就不對了

double ceil( double x ); 向0取整,應該用這個

標頭檔案#include

28樓:匿名使用者

方法bai一:使用強制型別轉du換,強制捨去小數部分zhi。例如dao double a=3.14; int b= (int)a;

方法二:使用math.h的標

專準函式。屬

double floor(double x);

double ceil(double x);

使用floor函式。floor(x)返回的是小於或等於x的最大整數。

如:     floor(10.5) == 10    floor(-10.5) == -11

使用ceil函式。ceil(x)返回的是大於x的最小整數。

如:     ceil(10.5) == 11    ceil(-10.5) ==-10

29樓:

long long,不然string

30樓:匿名使用者

void main()

31樓:l灬順

floor(x)專門的取整函式

C 中,為什麼子類物件可以賦值給父類物件而反過來卻不行

子類繼承於父類,它含有父類的部分,又做了擴充。如果子類物件賦值給父類變數,則使用該變數只能訪問子類的父類部分 因為子類含有父類的部分,所以不會有問題 但是,如果反過來,這個子類變數如果去訪問它的擴充成員變數,就會訪問不到,因為原變數不包含該部分,會記憶體越界。子類從父類繼承了所有的方法和屬性,那麼父...

C語言教材練習,已賦值y 2019,為什麼輸出會從2201開始

一 初值明顯是 2001 但後面的註釋卻寫的是 2000二 while 迴圈的條件是誰寫的,滿足 2500時一定會滿足 2500 不滿足 2500 時也用不著判斷是否 2500 前面都是廢話 你將 2500 改為 2050 試試,應該是後面的顯示把前面顯示的頂沒了 你可以考慮下面的 for int ...

c語言題a b c 5 這個賦值語句為什麼不合法

皮潔仙璧 a 是一個表示式,且並不是變數。a 僅存在一個臨時空間用於儲存表示式的運算結果,該臨時空間並不能被修改,故其不能作為賦值型別運算子的左值。如 a b c是不合法的表示式,因為 a b 只有運算結果而不能被賦值,故不能作為賦值符號的左值 牛牛牛不牛 這個語句的意思是將 5賦值給 b c然後將...