我有这两行代码:
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]我得到了和其他变量相同的值,它给了我一个错误的数字,我不明白为什么
答案 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]))
我希望我能正确理解你的代码。