我试图在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我根本没有得到这个,请帮助:)
答案 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"));