c 中定義的變數為double型,為什麼輸出的數值總是不正

2021-03-27 18:09:55 字數 3517 閱讀 6678

1樓:山水阿銳

您好,您試試這個:

sum = sum+(1.0/num);

joychen_

如果不成,再試試:

num的型別改為double

yy_神_eeee

2樓:yy_神

num的型別改為double

c++為什麼定義整型變數輸入一個字元之後,輸出為0,**如下

3樓:金色潛鳥

c++ 裡的有格式輸入用 cin 比較麻煩,int 型只能輸入 10進位制常數(預設),輸入8進位制和16進位制常數要附內加一些語容句。

int 型 輸入ascii 字元 要用 c 語言的寫法:

例如 c++ 程式:

#include

using namespace std;

#include

int main()

4樓:太受歡迎了啦

把int變數換成string,成功

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

5樓:龍__鳳

#include

#include//加上標頭檔案

using namespace std;

void main()

6樓:匿名使用者

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

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

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

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

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

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

7樓:匿名使用者

#include

#include

using namespace std;

void main()

8樓:匿名使用者

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

c++,用double型變數進行運算,結果應該為0,但是輸出是—0.000000,我考慮應該是do 50

9樓:gta小雞

定義一個極小的量作為閾值,當浮點型減去其強制轉換後的整型的絕對值小於這個閾值時,認為浮點型值等於該整型。例:

#define zero 1e-12

double example;

if(example-(int)example1-zero) example=(int)example+1;

10樓:匿名使用者

double顯示就是帶小數的,不會顯示0的,自己控制輸出格式呀。你的考慮那個叫浮點型的舍入誤差

11樓:黑貝天枰

強制型別轉換為int型

c++ 要求double型變數 輸入的只能是數字,輸入字母報錯並返回

12樓:匿名使用者

先定義一個字元型的變數,然後檢查是數值和還是其他的,用ascii碼來分辨數值和字母就行了。

13樓:匿名使用者

可以cin.getline()獲得一個字串;

分析字串,如果是數字串,讓它通過,並提取出數字,否則,失敗。

14樓:匿名使用者

使用類似下面的抄判斷襲方法就可以了

。流如果不能成功將資料轉換為需要的型別,流就會處於錯誤狀態。

double f;

cin >> f;

if (!cin)

如果你想要流從錯誤狀態中恢復過來,

使用 cin.clear(); 注意,此時流中的內容還在。如果你想清除流中的內容,使用cin.sync();

比如你想要int a, b; cin >> a >> b; 如果使用者輸入了字母,那麼兩次cin都會失敗,如果你想要在cin >> a後繼續讓使用者輸入b,你需要這麼做:

cin >> a;

if (!cin)

cin >> b;

15樓:使命聽一聽召喚

這樣說吧 c++在輸入

來中能實現型別檢查

自cin是標準流物件

>>是資料析取運算子(將流中的資料送往變數中)——就是在這個過程對流中的資料進行型別檢查

正如你的

double f;

cin>>f;

如果輸入了非double型資料,

1、cin的一些狀態位會改變(這些狀態位用來流物件(例如cin)是否可以正常使用)

2、cin物件中還有剩餘的資料(f為double型,你輸入其它型別資料,>>不能將所有資料正常送往f中)

所以,兩個函式:

cin.sy**();//清空cin中殘餘資料(緩衝資料)

cin.clear();//將cin的所有狀態位恢復為可用(正常)

比如,現在需要輸入一個double型資料,輸入任何其他情況都重新輸入:

double f;

cin>>f;

while(!cin)

這樣就行了

我實在是沒有分了 這麼高的分 我當然得爭取一下下 希望採納 還可以討論

c++中為什麼1.0+2.0輸出來不是3.0而是3(定義輸出結果為double型)

16樓:晚風浮醉

cout自動調整了精度,你可以使用iomanip標頭檔案下的操縱函式setprecision()自己調整輸出的精度。

17樓:匿名使用者

因為cout會自動調整輸出精度

18樓:匿名使用者

定義輸出結果為浮點型

c++問題,為什麼這裡是double型別的隨機值呢?**如下

19樓:哥德堡快遞

void circle::setcoordinate(double x,double y)

你不暈?反正我暈了,估計編譯器也暈了。

新手問題,例題上的這個程式,將變數s定義為double型後,為什麼計算結果不正確啊?

20樓:思念也沉了海

printf("s = %d\n", s); 應為printf("s = %f\n", s);

在c++中long long 型變數與float/double變數相乘時,輸出結果是正確的嗎? 50

21樓:

你需要做強制型別轉換

如果想要正確的結果,你應該將結果強制型別轉換為float或double型

c語言中,float型和double型變數如果不指定寬度,應

double與float的區別在於在記憶體中存放資料時佔用的記憶體不一樣,前者8位元組,後者4位元組,也就是前者儲存的小數位數比後者多一倍。舉例說明對於1.9999996666,按照float輸出,結果可能為1.999999,如果按照double可能為1.999999。因為c語言預設輸出小數位數都取...

變數已被定義為字元型和數值型變數

分類變數或等級變數是不適合做pearson相關分析的。可以考慮做均值比較或logistic迴歸。你的兩個表是不是有一個資料有問題的啊?我有一次合併12個表,第九個表好像有點問題 但是開啟excel看不出來有什麼不同 後來我放棄那張表了,就合併成功了 型別不匹配,就是你要匯入的excel檔案和你定義的...

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

1 因為double型別都是1.若干個0和1,二進位制 乘以2的若干次冪來表示一內個數,所以,和十進位制的小數勢必不能夠容一一對應,因為位數有限,總要有一個精度 兩個數之間的實數是任意多的,但是很明顯double不可能表示任意多的數 那麼double的0就只是用一個近似0的數來表示的 2 浮點數比較...