非常有趣的事情。找到方程结果的最简单的源代码:ax + b = 0。我想知道,当 double x = -13/12 = -1.000000;和 双 x = -12/13= 0.000000; (对于 a 和 b int(类型转换)或 double),但 float 或 double x = -13f/12f = 1.083333 (没错)。 双倍有什么问题?
如果 {int a,b;},方程 {double 或 float x = -((double 或 float)b)/a;} 正确吗?如果它不可能是正确的 - 为什么?
int main()
{
double a, b, x;
scanf("%f %f",&a, &b);
fflush(stdin);
if(a!=0)
{x = -b/a; printf("x = %f", x);}
else printf("There is no solve in your equation.");
getchar();
return 0;
}
谢谢
最佳答案
在 C 语言中,如果你这样写
double x = 13/12;
编译器不会将除法视为浮点除法。相反,它会用整数进行除法,截断结果,并将其存储在 double 型中。更一般地说,C 在确定要执行什么类型的算术时不会查看正在写入的变量的类型。它只查看操作数的类型。
要解决此问题,请编写
双x = 13.0/12.0;
这些文字的类型为 double,因此除法将正确工作。
关于c - 双 float ?使用 double 时计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629667/