2010-02-23 3 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

Несомненно, у вас есть a и b, определенные как целые числа, в результате чего вся ваша формула будет выполнена в целочисленной математике. Либо определите их как числа с плавающей запятой, либо выполните примерно следующее:

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

, который заставляет математику выполнять операции с плавающей запятой.

+0

спасибо! Фактически, константа [0] была переменной, которая была целым числом, но ваш ответ помог мне решить проблему :) – wrongusername

+0

О, я вижу. Значение уже было рассчитано как .66667, но было усечено до целого числа (0) при назначении. – Gabe

1

Ваша постоянная 2 - это int, сделайте ее 2.0.

Убедитесь, что ваши переменные a и b удваиваются или плавают?

2

Постоянный integer? Есть a и b целые числа?

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

Проблема с целочисленным разделением и/или переменными.

Смежные вопросы