0

我试图让下面的公式起作用,但我得到了错误的结果,尽管我认为它没有问题。

例如,用户键入 4 个数字:

  • 输入1 = 100
  • 输入2 = 75
  • 输入3 = 30
  • 输入4 = 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

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

4

2 回答 2

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);
于 2013-10-01T04:09:41.647 回答
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;
于 2013-10-01T06:00:54.783 回答