我用麻省理工学院的AppInventor编写了一个简单的计算应用程序,我想为一个安卓应用程序将精确的计算集转移到Java,但它们是不同的,我尽力将计算转移到below.But,如below.But所示,与Kawa代码相比,below.But的计算是错误的。
有人能从我在AppInventor代码中的计算中指出哪些地方改变了Java代码吗?
这是Kawa代码的计算集,偏移深度、腿深和管道深度是用户输入的值:
Tri 1=atan(Offset Depth/Offset Length)
Mark 1=sqrt(Offset Length^2+Offset Depth^2)
Tri 2=(180-Tri1)/2
Mark 2=Duct Depth/(tan(Tri 2))然后,我尝试将计算转换为Java:
tri1、tri2、marking1、marking2为double类型,用户输入offsetLength、depth和ductDepth也为double。
tri1 = Math.atan(offsetDepth / offsetLength);
marking1 = Math.sqrt(Math.pow(offsetLength,2) + Math.pow(offsetDepth,2));
tri2 = (180 - tri1) / 2;
marking2 = ductDepth / Math.tan(tri2);这是应用程序的屏幕截图,人们可以更好地理解计算:


发布于 2013-12-14 20:00:58
可能有些除法是在it上执行的,因此小数丢失了(如果不知道变量的类型,很难判断)。让我们试一试,以确保我明确了这些类型:
tri1 = Math.atan(((double)offsetDepth) / offsetLength);
marking1 = Math.sqrt(Math.pow(offsetLength,2) + Math.pow(offsetDepth,2));
tri2 = (180 - tri1) / 2.0;
marking2 = ductDepth / Math.tan(tri2);此外,正如@CommonsWare所指出的,假设Math.PI等于180是错误的。
编辑
你更新了这个问题,表明变量实际上是,doubles。所以上面的内容不适用,但我建议你记住,在Java中,所有的三角运算都以弧度接收它们的输入,如果你使用的是度(就像它看起来是这样的,因为你从180个中减去),那么你必须确保所有的运算都是以弧度的形式得到它们的输入,在把它传递给三角函数之前,将其程度上的输入转换为弧度。
https://stackoverflow.com/questions/20587587
复制相似问题