首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Kawa中的计算重写为Java?

如何将Kawa中的计算重写为Java?
EN

Stack Overflow用户
提问于 2013-12-14 19:57:46
回答 1查看 183关注 0票数 3

我用麻省理工学院的AppInventor编写了一个简单的计算应用程序,我想为一个安卓应用程序将精确的计算集转移到Java,但它们是不同的,我尽力将计算转移到below.But,如below.But所示,与Kawa代码相比,below.But的计算是错误的。

有人能从我在AppInventor代码中的计算中指出哪些地方改变了Java代码吗?

这是Kawa代码的计算集,偏移深度、腿深和管道深度是用户输入的值:

代码语言:javascript
复制
 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

代码语言:javascript
复制
 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);

这是应用程序的屏幕截图,人们可以更好地理解计算:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 20:00:58

可能有些除法是在it上执行的,因此小数丢失了(如果不知道变量的类型,很难判断)。让我们试一试,以确保我明确了这些类型:

代码语言:javascript
复制
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个中减去),那么你必须确保所有的运算都是以弧度的形式得到它们的输入,在把它传递给三角函数之前,将其程度上的输入转换为弧度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20587587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档