制作数学解算器...... NaN消息

时间:2014-02-13 21:31:03

标签: javascript math nan

我正在尝试制作一个简单的二次公式求解器供我个人使用。它在很大程度上起作用,但是有一个问题:它仅在答案是有理数时才起作用(即,它不会显示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个十进制数字。

1 个答案:

答案 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");

};