

答案需要保留两位小数,请各位帮忙看看代码是哪里有问题
用%d输出没问题 但一保留小数全是0
运算中使用浮点型常量,或者将整型变量赋值给浮点型变量。这样会导致隐式类型提升,将整型转换为浮点型。
你定义的全是整型变量,如果不用强制类型转换,需要在运算过程中使用浮点型常量比如乘以个1.0,才能将结果转换成浮点数,从而实现保留小数
#include <stdio.h>
#include <math.h>
int main() {
int a = 0;
int b = 0;
int c = 0;
double x, y;
printf("请输入a、b、c的值:");
scanf("%d %d %d", &a, &b, &c);
int discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
x = (-b + sqrt(discriminant)) / (2 * a);
y = (-b - sqrt(discriminant)) / (2 * a);
} else if (discriminant == 0) {
x = y = -b / (2.0 * a);
} else {
printf("方程无实根\n");
return 0;
}
printf("方程的解为: %.2f, %.2f\n", x, y);
return 0;
}