我正在尝试制作一个简单的二次公式求解器供我个人使用。它在很大程度上起作用,但是有一个问题:它仅在答案是有理数时才起作用(即,它不会显示sqrt(-1),因为它是“i”)。当它试图执行计算并且答案不合理时,它将显示“NaN”。我的代码如下所示:
...*regular html*
<script type = "text/javascript">
var aValue = prompt("What is your 'a' value?");
var bValue = prompt("What's your 'b' value?");
var cValue = prompt("What's your 'c' value?");
var quadFinder = function x_finder(a,b,c) {
document.write((-1 * b + Math.sqrt(b*b - 4*a*c)) / 2*a);
document.write("<br>");
document.write((-1 * b - Math.sqrt(b*b - 4*a*c)) / 2*a);
};
quadFinder(aValue,bValue,cValue)
我知道这个功能全部都是合理的,因为只要答案只是一个数字,它就会起作用。
另一个问题:什么是 Math。命令会对数字进行舍入?我曾经输入了一些数字,它出现了一些疯狂的数字,后面有大约10个十进制数字。
答案 0 :(得分:0)
您可以尝试查看discriminant并捕捉复杂案例:
var quadFinder = function x_finder(a,b,c) {
var disc = b * b - 4 * a * c;
if (disc >= 0){
document.write((-1 * b + Math.sqrt(b*b - 4*a*c)) / 2*a);
document.write("<br>");
document.write((-1 * b - Math.sqrt(b*b - 4*a*c)) / 2*a);
} else {
var real = (-1 * b) / (2 * a);
var complex = Math.sqrt(-disc)/(2 * a);
document.write(real + " + " + complex + "i");
document.write("<br>");
document.write(real + " - " + complex + "i");
};