c中double資料的表示式計算結果為0但是

2021-03-04 06:08:14 字數 5949 閱讀 4002

1樓:芭拉絕舞

這個結果很好啊,無限趨向0了,如果你要好看一點兒,可以int強制轉換一下

2樓:匿名使用者

應該是你最初沒有給這個double資料賦初值吧,如沒有賦初值的話,你的運算結果就很可能是上面的結果。因為在你定義這個double資料的時候(未賦初值時)此時的這個資料是個隨機數。

3樓:油哥來了

你把你寫的**發過來。

c++中double型別的0乘以負數輸出為-0,為什麼?詳情如圖

4樓:匿名使用者

好吧,這道題太讓我好奇了,一看沒人回答,我自己試了一下。

一樣的程式,我用vc6.0輸出0。。。我就不截圖了。

看來和編譯器有關。。。

5樓:匿名使用者

我不能肯定,但是我認為這取決於編譯器的實現,他估計是看見乘法就直接就進行符號位乘法,即正正為正、負負為正、正負為負,以此修改結果的符號位,輸出時檢視符號位,如果符號位為1,則必定輸出「-」,這樣就會出現你看到的情況了,當然只是我的猜想。。。換句話就是我認為這是程式設計的結果。

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

6樓:龍__鳳

#include

#include//加上標頭檔案

using namespace std;

void main()

7樓:匿名使用者

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

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

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

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

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

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

8樓:匿名使用者

#include

#include

using namespace std;

void main()

9樓:匿名使用者

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

c++中定義的變數為double型,為什麼輸出的數值總是不正確這是為什麼,**如下

10樓:山水阿銳

您好,您試試這個:

sum = sum+(1.0/num);

joychen_

如果不成,再試試:

num的型別改為double

yy_神_eeee

11樓:yy_神

num的型別改為double

c++中用cout函式怎樣實現格式輸出

12樓:兔丞飛

#include

#include //不要忘記包含此標頭檔案

using namespace std;

int main()

擴充套件資料

#include // 在c和一些古老的c++中是stdio.h,新標準為了使標準庫

// 的標頭檔案與使用者標頭檔案區別開,均推薦使用不用副檔名

// 的版本,對於原有c庫,不用副檔名時頭檔名前面要加c

class myoutstream

;const myoutstream& myoutstream::operator <<(int value)const

const myoutstream& myoutstream::operator <<(char* str)const

myoutstream myout;//隨時隨地為我們服務的全域性物件myout

int main()

13樓:匿名使用者

c++**為:

#include

#include //不要忘記包含此標頭檔案int a;

cout

寬度為n,setiosflags(ios::left)設定輸出資料在本域寬範圍內向左對齊。

14樓:何度千尋

首先要加上標頭檔案#include

#include

#include //不要忘記包含此標頭檔案

using namespace std;

int main()

{int a;

cout<<"input a:";

cin>>a;

cout<<"dec:"<制形式輸出整數

cout<<"hex:"<進製形式輸出整數a

cout<<"oct:"<

輸出結果如下:

input a:34↙(輸入a的值)

dec:34                   (十進位制形式)

hex:22                   (十六進位制形式)

oct:42                   (八進位制形式)

china               (域寬為)

*****china               (域寬為,空白處以'*'填充)

pi=3.14285714e+00        (指數形式輸出,8位小數)

pi=3.1429e+00            (指數形式輸出,4位小數)

pi=3.143                 (小數形式輸出,精度仍為)

15樓:

控制符是在標頭檔案iomanip.h中定義的物件。 使用前必須把iomanip.h包含進來

1. i/o的書寫格式

i/0流是輸入或輸出的一系列位元組,當程式需要在螢幕上顯示輸出時,可以使用插入操 作符「<<」向cout輸出流中插入字元。例如:

cout<<」this is a program.\n";

當程式需要執行鍵盤輸入時,可以使用抽取操作符「>>」從cin輸**中抽取字元。例如:

int myage;

cin>>myage;

不管把什麼基本資料型別的名字或值傳給流,它都能懂。

例如,下面的函式輸出字串和整數:

#include

void main()

{cout<<"my name is jone\n";

cout<<"the id is";

cout<<2;

cout<>i >>f >>l;

cin能夠知道抽取的變數之型別,它將對i,f,l分別給出乙個整型、浮點型和長整型數。

2.使用控制符

流的預設格式輸出有時不能滿足特殊要求,如:

double average=9.400067;

cout<義的物件。可以直接將控制符插入流中。常用控制符如表2-4所列。

表2-4 i/o流的常用控制符

控制符描 述dechex

octsetfill(c)

setprecision(n)

setw(n)

setiosflags(ios::fixed) setiosflags(ios::scientific) setiosflags(ios::

left) setiosflags(ios::right) setiosflags(ios::skipws) setiosflags(ios::

uppercase) setiosflags(ios::lowercase)

置基數為10

置基數為16

置基數為8

沒填充字元為c

沒顯示小數精度為n位

設域寬為n個字元

固定的浮點顯示

指數表示

左對齊右對齊

忽略前導空白

16進製製數大寫輸出

16進製製數小寫輸出

使用控制符時,要在程式的頭上加標頭檔案iomanip.h。

3.控制浮點數值顯示

使用setprecision(n)可控制輸出流顯示浮點數的數字個數。c++預設的流輸出數值有效位是6。

如果setprecision(n)與setiosflags(ios::fixed)合用,可以控制小數點右邊的數字個數。setiosflags(ios::

fixed)是用定點方式表示實數。

如果與setiosnags(ios::scientific)合用, 可以控制指數表示法的小數字數。setiosflags(ios::scientific)是用指數方式表示實數。

例如,下面的**分別用浮點、定點和指數方式表示乙個實數:

//*********************

//** ch2_1.cpp **

//*********************

#include

#include //要用到格式控制符

16樓:匿名使用者

左對齊:cout <意要加上標頭檔案#include

io 流控制標頭檔案, 主要是一些操縱用法如setw(int n),setprecision(int n)

17樓:匿名使用者

常用的是setw();

18樓:400和260和

cout不是函式,是乙個物件!

c++用double型計算後的結果如何除去小數字多餘的0

19樓:

c++預設是不輸出浮點數小數

點後多餘的0的。如果想要輸出小數點後多餘的0,則要在程式中用cout.setf(ios::

showpoint);語句設定,不再想輸出時要用cout.unsetf(ios::showpoint);語句恢復。

以下**供理解這個變化過程:

//#include "stdafx.h"//if the vc++6.0, with this line.

#include

using namespace std;

int main(void)

輸出是:

預設不輸出小數點後的0

5.75.7000005.7

20樓:注意樓下

cstring cc;

dounle m;

cc.format("%f",m);

cc.trimright("0");

cc.trimright(".");

21樓:匿名使用者

mfc的話就用cstring 格式化一下

double dw=1.123;

cstring str;

str.format("%.02f",dw);//意思是小數點留兩位,也就是str=1.12

純手打,望採納

22樓:叫撒名字啊啊啊

將float-> cstring,去掉小數點後多餘的0,如43.343000-> 43.343 20.000000-> 20

如果用strtemp.format( "%f ",fdata)這裡轉換有問題,會把123.12->123.1200325.123-> 25.122999

或者轉換成char陣列然後向前替換0.

23樓:匿名使用者

你可以在輸出格式中控制保留有效數的個數,如%.2f(保留小數點後兩位)

24樓:匿名使用者

同求,我現在也在學mfc,c++學得不太紮實。

c語言中怎麼算表示式的資料型別例如 表示式18 4 sqrt 4 0 8值的資料型別為什麼?謝謝

和 等於平時計算的除以 不取餘數 和乘以 然後sqrt 等於開方 18 4 sqrt 4.0 8 18除以4乘以2.0除以8 1.0 double 18 4 4 int與 int運算仍為 intsqrt 4.0 2.0 double 返回值的型別是函式sqrt定義的 18 4 sqrt 4.0 為i...

c語言逗號表示式的問題,C語言逗號表示式的問題 x 6,y 7,z 8 r func x ,y ,x y ,z

首先說明原理 1 逗號運算子也稱順序求值運算子,即從左至右順序執行,最後乙個值會覆蓋前面的值,所以使用逗號將幾個表示式連線起來的帶括號的表示式,最終整個逗號表示式的值為最後乙個表示式的值。2 自增和自減運算子有前置和後置之分,在混合運算中,前置是先自增或者自減,再進行取值 而後置恰好相反,即先取值進...

C語言中for表示式1表示式3可理解為

for 表達 式1 表示式2 表示式3 表示式1表示執行一次表示式1,表示式2 就是表示式1後面的 為控制表示式,表示式2為空表示這個式子恒為真,既然是真,那如果迴圈體裡沒有退出的判斷條件的話這個迴圈將會永遠執行 然後執行迴圈體 這裡你沒寫,就是在for迴圈下面的語句或者復合語句 然後執行表示式3 ...