asin()函数有问题

时间:2012-05-08 22:43:43

标签: java android math sin

我有这两行代码:

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 [5]使用var [1]我得到了和其他变量相同的值,它给了我一个错误的数字,我不明白为什么

3 个答案:

答案 0 :(得分:1)

你确定你的数字是Radians而不是Degrees吗?

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

答案 1 :(得分: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

the documentation一样,Math.asin()的结果绑定在-Pi / 2和Pi / 2之间......

所以你的答案显得“不正确”,因为它被绑定在这个范围内。

<强>交替

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

和2&gt; 1.57所以:

2 - 1.57 = 0.43

1.57 - 0.43 = 1.14

因此: 2 = 1.14

答案 2 :(得分:0)

我认为你的问题是

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

而不是

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

我希望我能正确理解你的代码。