Javascript Math.log错误的结果,Visual Studio

时间:2013-10-01 04:04:25

标签: javascript visual-studio

我正试图让下面的公式起作用,但我得到了错误的结果,虽然我不认为它有什么问题。

用户输入4个数字作为例子:

  • input1 = 100
  • input2 = 75
  • input3 = 30
  • input4 = 170

公式:

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

为什么?我错过了什么吗?

2 个答案:

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