为什么一直添加0?

时间:2014-04-28 21:08:44

标签: javascript math jsfiddle median

我试图在javascript中构建一个MCT计算器,但是在创建中位数的过程中,我不断收到错误。这是我的代码:(请记住,我对javascript相对较新)

var min = prompt("Enter minimum value");
var max = prompt("Enter maximum value");
if (min > max) {
    alert("Error:\n\n\nMinimum value '" + min + "' is greater than Maximum value '" + max + "'");
} else {
    var a = (max - min);
    alert("variable a is " + max + " - " + min + " = " + a);
    var b = a / 2;
    alert("variable b is " + a + " / 2 = " + b);
    var c = min + b;
    alert("variable c is " + min + " + " + b + " = " + c);
    alert("Range is " + a + "\n\nMedian is " + c + "\n\nMin is " + min + "\n\n Max is " + max);
}

如果您输入5表示最小值,10表示最大值,它会告诉您5大于10,但它不是..如果您输入10表示最小值,15表示最大值,它的中位数是102.5而不是12.5我根本没有得到这个,请帮助:)

2 个答案:

答案 0 :(得分:4)

尝试使用数字,而不是字符串:

var min = parseInt(prompt("Enter minimum value"), 10);
var max = parseInt(prompt("Enter maximum value") , 10);

或者,如果你想允许花车:

var min = parseFloat(prompt("Enter minimum value"));
var max = parseFloat(prompt("Enter maximum value"));

这是因为字符串按字典顺序使用数字字符代码进行比较,而不是数字本身的值。

答案 1 :(得分:1)

prompt函数返回一个字符串,并根据字符串中每个字符的Unicode代码点(也称为lexicographical or alphabetical order)比较字符串。 "5"的代码点大于"1"的代码点,因此字符"5"实际上 大于字符串"10"(即按字典顺序排列。)

尝试解析输入,如下所示:

var min = parseFloat(prompt("Enter minimum value"));
var max = parseFloat(prompt("Enter maximum value"));