js数学方程式之谜

时间:2017-07-01 15:24:29

标签: javascript math

我是新来的:)

所以,在javascript中,我只是"简单地说#34;想要在等式中求解X: 我原来的公式是:

var X = (((((k/(cc**ci))-bk*)/(0.01*kg))-18)/((0.1+0.05*d1)*(280/(w+100)))-sd)

如果我没记错的话,它返回了一些非常高的数字...

好吧,我猜这是一个问题......所以,我试过这个:

var X = (((((k*1.0/(cc*1.0*ci*1.0))-bk*1.0)/(0.01*kg*1.0))-18)/((0.1+0.05*d1*1.0)*(280/(w*1.0+100)))-sd*1.0)

现在它对这些简单的变量非常有效: cc = 0,ci = 0,bk = 100,kg = 100,d1 = 10,w = 100,sd = 10

但是......当解决方案接近0时,突然变得非常疯狂。 在这种情况下,如果k = 126.4,则解决方案应为0.但是,我得到的是" 7.1054273576"代替。我用不同的程序(甚至我的旧口袋计算器大声笑)计算它,他们都说它是0 - >所以我猜我的等式应该是正确的。

我试过k = 126.5,返回0.119。 并且k = 126.3,返回-0.119 这些是正确的。 所以逻辑上k = 126.4应该返回0 ......但它没有。它仍然返回7.1(...)。

我甚至尝试用(见上文)数字替换所有变量:

var X = (((((126.4*1/(1*1*1*1))-100*1)/(0.01*100*1))-18)/((0.1+0.05*10*1)*(280/(100*1+100)))-10)

- >这仍然返回7.1(...),虽然它应该是0。 所以这个问题绝对不是我的变数之一。 对于这些测试,我使用的是输入类型="数字"反对审查结果,如果这有任何相关性......

我仍然无法看到问题,这看起来绝对不合逻辑,对我来说完全是个谜。请帮助!

2 个答案:

答案 0 :(得分:5)

你最后错过了一点。 X等于:

7.105427357601002e-15
                 ^
                 Scientific Notation!

注意最后的e-15。这意味着,用十进制表示法,它是

0.000000000000007105427357601002

或换句话说,就大多数用途而言,非常接近0。它与0之间的差异可能来自四舍五入。

答案 1 :(得分:0)

问题确实是最后的e-15。因此,如果其他人在这个页面上遇到绊脚石,他们可能会停止疑惑。

一个非常简单的解决方案:在这种情况下,只需使用Math.round()来减少逗号后面的整数,以便" e"我不习惯用来描述这个数字。