2010-02-23 81 views
0

我在我的程序有這樣的代碼:(我包括了調試目的的cout語句)如何解決此公式錯誤?

cout << "b: " << b << "\na: " << a; 
constant[0] = (-b/(2 * a)); 
cout << "\nconstant: " << constant[0] << endl; 

我得到的輸出是:

b: -4 
a: 3 
constant: 0 

而我試圖讓恆[0 ]等於 - ( - 4)/(2 * 3),或0.6666 ... 我在做什麼錯誤的公式我放在那裏?

+0

這是非常基本的東西。這必須在任何基本的C/C++教科書中進行解釋。 – Adil

+0

是的,我在多年前的教科書中學到了它。但是錯誤可能隨時發生,不是嗎? 爲什麼你們不得不譴責那些「非常基本」和「必須在任何基本」書籍中解釋過的東西? – wrongusername

回答

9

毫無疑問,你有ab定義爲整數,導致整個公式在整數數學中完成。要麼將它們定義爲浮點數或者做這樣的事情:

constant[0] = (-b/(2.0 * a)); 

這迫使數學在浮點完成。

+0

謝謝!實際上,常量[0]是一個整數的變量,但你的答案幫助我解決了問題:) – wrongusername

+0

哦,我明白了。該值已被計算爲.66667,但在分配時被截斷爲整數(0)。 – Gabe

1

你的常量2是一個整數,使其爲2.0。

確保您的變量a和b是雙打或浮動?

2

是不變的integer?是ab的整數?

cout << "b: " << b << "\na: " << a; 
constant[0] = (-b/(2.0 * a)); 
cout << "\nconstant: " << constant[0] << endl; 

整數除法和/或變量類型是問題。