【发布时间】:2018-07-08 14:20:24
【问题描述】:
以下问题在 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 位开始。我是否缺少两种语言之间不同的算术顺序?
【问题讨论】:
-
我要做的第一件事是拆分表达式并寻找显示不同结果的最小表达式。我怀疑三角函数。
-
3 / 2结果为1,因为它是整数除法。 -
@DanielA.White 我是个白痴。我完全忘记了 C# 中的这种行为,就是这样!
标签: javascript c# math arithmetic-expressions operator-precedence