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

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

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 main函式的四種情況 static void main static int main static void main string args static int main string args 1.主程式main函式一共有以上四種版 2.一個程式中不能有兩個以上的main函式,有...

c中怎麼給已經手動繫結的下拉選單賦值

你做的是b s結構還是c s?如果是b s的話你可以在資料訪問層寫好方法直接繫結方法到下拉選單上。或者直接繫結資料庫中的某個表。如果你要手動給下拉選單繫結的話就是 下拉選單的名字.datasource 資料訪問層裡邊對應的方法名字。 能不能先儲存原來的items,然後把繫結解除,最後再把原來的ite...

intx,y並已正確給變數賦值為什麼(x y 0兩豎x y 0)與表示式(x yx

x y 0 x y 0 表示式,可以理解為x不等於y則該式為1,否則為0,而後面判斷表示式中 x y 也是個判斷x是否等於y的語句,x y 0則等於這個表示式為假,其值是就是0,所以等價的 x y 0 x y 0 中間兩豎表示或運算。改表示式的含義是x!y時成立。x y當x!y時也成立。故兩者等價。...