gpt4 book ai didi

c - 双 float ?使用 double 时计算错误

转载 作者:行者123 更新时间:2023-11-30 19:59:21 26 4
gpt4 key购买 nike

非常有趣的事情。找到方程结果的最简单的源代码: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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com