C# 中的算术顺序与 Javascript

Arithmetic Order in C# vs Javascript

以下问题 returns C# 和 Javascript 的不同结果:

JS 结果 = 0.6987590698013918

C# 结果 = 0.697932453616849

Javascript

mu =0.6962788561718957;
e1= 0.0016792203861749964;
phi1 = mu + e1 * (3 / 2 - 27 * e1 * e1 / 32) * Math.sin(2 * mu) + e1 * e1 * (21 / 16 - 55 * e1 * e1 / 32) * Math.sin(4 * mu);

C#

double mu = 0.6962788561718957;
double e1 = 0.0016792203861749964;
double phi1 = mu + e1 * (3 / 2 - 27 * e1 * e1 / 32) * Math.Sin(2 * mu) + e1 * e1 * (21 / 16 - 55 * e1 * e1 / 32) * Math.Sin(4 * mu);

Javascript 和 C# 共享相同的双重标准,所以我不认为结果因精度而不同,尤其是考虑到更改从第 1000 位开始。我是否缺少两种语言之间不同的算术顺序?

您的计算结果为整数,截断了小数位。

这在 C# 中是正确的,但不是 JavaScript:

3 / 2 == 1 

要获得与 JS 相同的结果,请使用至少一个浮点数进行除法。

double phi1 = mu + e1 * (3.0 / 2 - 27 * e1 * e1 / 32) * Math.Sin(2 * mu) + e1 * e1 * (21.0 / 16 - 55 * e1 * e1 / 32) * Math.Sin(4 * mu);

3.0 / 221.0 / 16

结果:0.698759069801392