我正试图让下面的公式起作用,但我得到了错误的结果,虽然我不认为它有什么问题。
用户输入4个数字作为例子:
公式:
var results = (Math.log(input1 + input2 - input3) / Math.log(10)) - (Math.log(input4) / Math.log(10));
结果是: 2.6 这是错误的。
如果我更改下面的公式,那就可以了。
var results = (Math.log(145) / Math.log(10)) - (Math.log(170) / Math.log(10));
结果是: -0.1
为什么?我错过了什么吗?
答案 0 :(得分:1)
听起来你可能有别的东西导致这种不正确的行为。两个代码块都产生相同的结果。请参阅http://jsfiddle.net/Pajeh/链接。
var input1 = 100;
var input2 = 75;
var input3 = 30;
var input4 = 170;
var results1 = (Math.log(input1 + input2 - input3) / Math.log(10)) - (Math.log(input4) / Math.log(10));
alert(results1);
var results2 = (Math.log(145) / Math.log(10)) - (Math.log(170) / Math.log(10));
alert(results2);
答案 1 :(得分:0)
没有错
var results = (Math.log(input1 + input2 - input3) / Math.log(10)) - (Math.log(input4) / Math.log(10));
问题在于:
var input1 = document.getElementById("one").value;
var input2 = document.getElementById("two").value;
var input3 = document.getElementById("three").value;
var input4 = document.getElementById("four").value;
用户提供的数字被视为字符串,因此当程序运行上述公式时,将生成以下内容:
var results = (Math.log(10075 - 30) / Math.log(10)) - (Math.log(170) / Math.log(10));
因为当您在Javascript中添加两个字符串时,例如One + Two,它将为您提供OneTwo。
因此,100 + 75 = 10075
为了解决问题,我在+
前添加了document.getElementById
。
var input1 = +document.getElementById("one").value;
var input2 = +document.getElementById("two").value;
var input3 = +document.getElementById("three").value;
var input4 = +document.getElementById("four").value;