这个关于方程解的程序错在哪了

#include <stdio.h>
#include <math.h>
int main()
{
  int a,b,c,k;
  float x1,x2;
  printf("please input a,b,c");
  scanf("%d%d%d",&a,&b,&c);
  k=sqrt(b*b-4*a*c);
  x1=((-2)*b+k)/(4*a);
  x2=((-2)*b-k)/(4*a);
  if(k<0)
      printf("该方程无解\n");
  else if(k>0)
      printf("该方程有两根:x1=%.2f x2=%.2f",x1,x2);
  else
      printf("该方程有两个相等的根:x1=x2=%f",x1);
  printf("\n");
  return 0;

}

公式错了,x1=(-b+k)/2*a,x2=(-b-k)/2*a,还有那个k定义为int了,那么无论k算出来是不是整数,最后都会取整,定义为float试试