在我的书中,它问我以下问题这是针对compsci-1
此版本的二次公式有什么问题?
x1 = (-b - sqrt(b * b - 4 * a * c)) / 2 * a;
x2 = (-b + sqrt(b * b - 4 * a * c)) / 2 * a;
答案 0 :(得分:2)
您的代码正在翻译的等式是:
当然不是二次方程的解。您需要这个等式的解决方案:
区别是什么?在第一个计算分子,然后除以2,然后乘以a。这就是你的代码正在做的事情。在第二个你计算分子,然后你计算分母,最后你划分它们。
所以使用其他变量:
num1 = -b - sqrt(b * b - 4 * a * c);
num2 = -b + sqrt(b * b - 4 * a * c);
den = 2 * a;
x1 = num1 / den;
x2 = num2 / den;
当然可以写成:
x1 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
您必须插入这些括号以强制在分割之前计算分母。正如@atru评论中所建议的那样。