将Excel公式转换为Javascript

将Excel公式转换为Javascript,javascript,excel,formula,Javascript,Excel,Formula,我在excel上有这个公式 =(1130000000000*F11^1.85)/(F19^1.85*(F13*(1-2/F15))^4.8655) 什么时候 我把它转换成这个 Math.round((1130000000000*Math.pow(q,1.85))/(Math.pow(150,1.85)*Math.pow(d*(1-2/sdr)),4.8655)) 但结果是错误的 什么时候 结果应该是8.76 但我得到了很长的数字 有什么帮助吗? 谢谢完全忽略我之前的答案,尽管如果继续使用这些

我在excel上有这个公式

=(1130000000000*F11^1.85)/(F19^1.85*(F13*(1-2/F15))^4.8655)
什么时候

我把它转换成这个

Math.round((1130000000000*Math.pow(q,1.85))/(Math.pow(150,1.85)*Math.pow(d*(1-2/sdr)),4.8655))
但结果是错误的

什么时候

结果应该是
8.76
但我得到了很长的数字

有什么帮助吗?
谢谢

完全忽略我之前的答案,尽管如果继续使用这些大数字,您肯定会遇到这个问题,但实际问题是代码中的括号放错了位置。如果使用此选项(仅将变量名替换为值):

它返回9(四舍五入的8.76),您放错位置的括号位于
1-2
标记周围

作为将来的参考,Javascript可以理解的最大无故障数为+/-9007199254740992

参考资料:

来自YUI博客

JavaScript只有一种数字类型:IEEE 754双精度浮点。具有单一数字类型是JavaScript的最佳特性之一。多个数字类型可能会导致复杂性、混乱和错误。单一类型是简化和稳定的。 不幸的是,二进制浮点类型有一些明显的缺点。最糟糕的是,它不能准确地表示小数,这是一个大问题,因为人类已经用小数做了很长很长时间的商业活动。切换到基于二进制的数字系统会有好处,但这不会发生。因此,0.1+0.2===0.3是错误的,这是许多混乱的根源


什么是
long
号码?我的意思是long错误的号码,没有更正。那么在这种情况下我该怎么办?等等,给我一点时间,忘了执行操作顺序,但我认为我提到的根本原因仍然是你的问题非常感谢,我过去一直想得到正确的号码
Math.round((1130000000000*Math.pow(q,1.85))/(Math.pow(150,1.85)*Math.pow(d*(1-2/sdr)),4.8655))
q = 120
d = 200
sdr = 17
Math.round((1130000000000*Math.pow(120,1.85))/(Math.pow(150,1.85)*Math.pow((200*(1-2/17)),4.8655)))