Javascript 理解功能

Javascript 理解功能,javascript,math,Javascript,Math,我很难理解一个函数,希望有人能帮我。我试图找到链轮的中径,JavaScript中的函数是: function sprocket_diam(dataform,pitch,teeth) { var a,b,c,d,e; a = pitch / 2; b = teeth * 2; c = 360 / b; d = Math.sin ((c * Math.PI) / 180); e = (a / d) * 2 dataform.diam.val

我很难理解一个函数,希望有人能帮我。我试图找到链轮的中径,JavaScript中的函数是:

function sprocket_diam(dataform,pitch,teeth)
{



   var a,b,c,d,e;

   a = pitch / 2;
   b = teeth * 2;
   c = 360 / b;
   d =  Math.sin ((c * Math.PI) / 180);
   e = (a / d) * 2



    dataform.diam.value = e;

}
上面的函数可以正常工作,但我正试图用计算器手动完成。我认为我遇到的问题来自
d
变量。例如,假设我有一个齿距为
.5“
15
齿链轮。使用上述公式,我得到的变量数为:
a=0.25
b=30
c=12
,对于
d
,我取
(12*3.14)/180
,这给了我
0.2093
所以
e=(0.25/.2093)*2
结果是
2.388915432
但答案不正确,应该是
2.404867172372066
有人能指出我做错了什么吗?我一直在数学上挣扎。

你的错误是你做的好像
数学一样。PI
会是
3.14


如果你使用
Math.PI
的精确值,你会得到
12*Math.PI/180==0.2094391023931953
,而不是你使用的
0.2093
,最后你会发现
2.404867172372066
你的错误是你做的好像
Math.PI
3.14


如果你使用
Math.PI
的精确值,你会得到
12*Math.PI/180==0.2094391023931953
而不是你使用的
0.2093
,最后你会发现
2.404867172372066
你没有计算窦。(Math.sin)

你没有计算窦。(Math.sin)

你确定螺距和齿数是双倍的吗?@user1737909你是什么意思?在你的手算中,它应该是
e=(0.25/Math.sin(.2093))*2
,而不是
e=(0.25/.2093)*2
。根据这个变化,用3.14代替
Math.PI
产生的错误是2.4060690729394008(而不是2.404867172372066).你确定齿距和齿数是双倍的吗?@user1737909你是什么意思?在你的手算中,它应该是
e=(0.25/Math.sin(.2093))*2
,而不是
e=(0.25/0.2093)*2
。这样的变化,用3.14代替
Math.PI
产生的错误是2.4060690729394008(而不是2.404867172372066).我试过你的例子,得到了
0.2094391023931953
,但它会给我
2.3873241463784302557385799320236
作为答案什么给了你
2.3873241463784302557385799320236
?你用你的代码是不可能得到的。OP不是从代码中得到2.387…它是从代码的手工模拟得到的d模拟忽略了正弦。我试过你的例子,得到了
0.2094391023931953
,但它会给我
2.3873241463784302557385799320236
作为答案,给你的答案是
2.3873241463784302557385799320236
?用你的代码你是不可能得到的。OP不是从代码中得到2.387…它来自代码的手动模拟。手动模拟忽略了正弦值。+1。这说明了大部分差异。其余的是使用3.14而不是更精确的
Math.PI
+1。这说明了大部分差异。其余的是使用3.14而不是更精确的
Math.PI