首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求指导java

2013-04-20 
求指点javaScanner s new Scanner(System.in)System.out.println(请输入:)double x s.nextDouble(

求指点java


Scanner s = new Scanner(System.in);
System.out.println("请输入:");
double x = s.nextDouble();
System.out.println(x);
if(Math.abs(x) % 180 == 90){
System.out.println("error");
}
else{
float y = (float)Math.tan(x*Math.PI/180);
System.out.println(y);
}



为什么当我输入180时,得到的结果不是0。  求解释。 Java Math
[解决办法]
该程序得到的结果为什么是0?float y = (float)Math.tan(x*Math.PI/180);这条语句中的x是180.0,相当于float y = (float)Math.tan(Math.PI);试问,等式左边是0吗? 若要使结果为0,请把y改成int型变量
[解决办法]
我觉得   x*Math.PI/180   和  x/180 *Math.PI 的结果不一样,因为Math.PI 是个小数,x *Math.PI 也是个小数,系统对小数肯定存在精度的问题。。。是不是,求解决
[解决办法]
Math.tan(Math.PI/180*x),理想情况下是这样的
但是可能因为java计算double时不精确,得到的数字总是一个无限趋于0的数,比如45度(Math.PI/4)运算结果是0.99999999,而不是1,Java菜鸟,不会解决这个问题了

热点排行