0

我有这两行代码:

var[1] =var[2].multiply(var[3]).multiply(var[4]).multiply(new BigDecimal(Math.sin(var[5].doubleValue())));
    var[5] =new BigDecimal(Math.asin(var[1].divide(var[2],precision,BigDecimal.ROUND_HALF_UP).divide(var[3],precision,BigDecimal.ROUND_HALF_UP).divide(var[4],precision,BigDecimal.ROUND_HALF_UP).doubleValue()));

我为 var[2]、var[3]、var[4] 和 var[5] 赋值以获得 var[1]。

使用的方程是

var[1]=var[2]*var[3]*var[4]*sin(var[5])

然后我试图使用我刚刚得到的 var[1] 和其他变量的相同值来获取 var[5],它给了我一个错误的数字,我不明白为什么

4

3 回答 3

1

你确定你的数字是弧度而不是度数吗?

尝试转换为弧度:http ://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Math.html#toRadians(double )

于 2012-05-08T22:46:01.250 回答
1

改写

我正在清理一些算术蜘蛛网,但是:

Math.asin(Math.sin(1)) == ~1
Math.asin(Math.sin(3.14 / 2)) == ~3.14 / 2  // 1.57
Math.asin(Math.sin(3.14)) == ~0

就像文档说 Math.asin() 的结果绑定在 -Pi/2 和 Pi/2 之间...

所以你的答案看起来“不正确”,因为它被限制在这个范围内。

备用

最 asin() 将返回的是: Pi/2 = 1.57

并且 2 > 1.57 所以:

2 - 1.57 = 0.43

1.57 - 0.43 = 1.14

因此:2 = 1.14

于 2012-05-08T23:10:34.873 回答
0

我认为你的问题是

var[5] = asin(var[1]/var[2]/var[3]/var[4])

而不是

var[5] = asin(var[1] 除以 (var[2]*var[3]*var[4]))

我希望我正确理解了您的代码。

于 2012-05-08T22:53:48.500 回答