2010-02-23 51 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; 

整数除法和/或变量类型是问题。