преобразование из числа с плавающей точкой в ​​целое число - PullRequest
0 голосов
/ 06 сентября 2011

у меня есть следующий упрощенный алгоритм для вычисления корней квадратного уравнения

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    float x,x1;
    x=0;x1=0;
    int a=1;
    int b;
    int c;
    cout<<"enter the second term:"<<endl;
    cin>>b;
    cout<<"enter the third term:";
    cin>>c;
    float d=b^2-4*a*c;
      if (d<0){

          cout<<"the equation  has not real solution :"<<endl;
              }


      else   if (d==0) {  x=(-b/2); x1=x;}
      else
      {
          x=(-b+sqrt(d))/2;x1=(-b-sqrt(d))/2;


      }
      cout<<"roots are :"<<x<< " "<<x1<< "  "<<endl;



    return 0;
}

но это дает мне предупреждение

arning C4244: '=' : conversion from 'int' to 'float', possible loss of data

и когда я ввожу -6 и 9, это дает, что корни равны 6 и нулю, что, конечно, не соответствует действительности, пожалуйста, помогите мне

Ответы [ 4 ]

6 голосов
/ 06 сентября 2011

^ - это побитовый оператор xor, а не степень, как вы, вероятно, думаете. Чтобы увеличить число до произвольной степени, используйте std::pow (из стандартного заголовка cmath). Для двух степеней вы можете просто использовать x * x.

3 голосов
/ 06 сентября 2011

b ^ 2 означает использование оператора XOR, что я не думаю, что вы хотели использовать. Попробуйте использовать b * b. Также может быть полезно объявить a, b и c как числа с плавающей точкой, а не как целые.

2 голосов
/ 06 сентября 2011

Помимо правильных замечаний по операции xor

вы не можете делать все вычисления для int и затем приводить их к плавающим значениям.Таким образом, результат div округляется.попробуйте разыграть b в середине расчета как (float) b.или определите все a, b, c и d как числа с плавающей запятой

1 голос
/ 06 сентября 2011

^ является побитовым оператором xor, т.е., почему компилятор выдает предупреждение. Попробуйте использовать функцию pow, объявленную в заголовочном файле math.h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...