我正在创建一个类,我正在尝试创建一个将时间作为参数的方法,并使用此公式来查找某些内容的距离:
d(t) = vt cosθ
其中d(t)是距离,v是速度,t是时间,θ是以度为单位的角度。
这是我用Java编写的,然后我测试了它但没有得到正确的结果。
如果我用这些值计算距离:velocity = 21 time = 43 angle = 62我得到423.93的结果,但是如果我把它放在我的测试类中并使用该方法(并输入相同的值)我得到487.89。
我做错了什么?为什么我得到这个值?
方法:
public double getDistance(double time) {
double vt = velocity * time;
angle = (int) Math.toRadians(angle);
double cosineCalc = Math.cos(angle);
double distance = vt * cosineCalc;
return distance;
Tester类实现:
Projectile testOne = new Projectile(21, 62);
double actual = testOne.getDistance(43);
答案 0 :(得分:2)
问题是(int) Math.toRadians(angle)
失去了精度并最终将其四舍五入为整数。要使其有效,请确保将angle
保留为double
,然后移除(int)
广告。
答案 1 :(得分:0)
angle = (int) Math.toRadians(angle);
删除(int)转换,它应该可以工作。