我是新来的 :)

因此,在javascript中,我“简单地”想在方程中求解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)


->尽管它应该为0,但它仍返回7.1(...)。
因此,问题绝对不是我的变数之一。
对于这些测试,如果有任何意义,我使用输入type =“ number”对象查看结果。

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

最佳答案

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

7.105427357601002e-15
                 ^
                 Scientific Notation!


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

0.000000000000007105427357601002


换句话说,就大多数用途而言,非常接近0。它与0之间的差异可能是通过舍入产生的。

09-06 13:21