我做了一段程序, 需要使用多次循环,循环中还要使用三角函数,所以变量都使用double型,java的double型数据小数点后精确到了16位,以至于程序长时间无法运行成功,死在那里。可我看同学用的vc6,double型小数点后只有4位。什么办法能让java的double型数据小数点后只保留4位或更少?程序片断如下,比较复杂
do
{
if (planenum==0)
break;
xyuan=xsign;
yyuan=ysign;
xsign=xsign+0.05; //把横坐标微小移动
ysign=Math.sqrt(16-0.0625*xsign*xsign); //用xsign把ysign求出
longthadd=Math.sqrt((xsign-xyuan)*(xsign-xyuan)+(ysign-yyuan)*(ysign-yyuan));//算出增加量
longth=longth+longthadd;
}while(longth<minspeed);
longopoint=Math.sqrt(xsign*xsign+ysign*ysign);
if(xsign<0) //角度 反三角函数变换
{y= longopoint*Math.sin(3.1416-Math.asin(ysign/longopoint)-0.1606)+36.5; //用当前xsign变换出x
x=longopoint*Math.cos(3.1416-Math.asin(ysign/longopoint)-0.1606)+27.5;
}
else{
y=longopoint*Math.sin(Math.asin(ysign/longopoint)-0.1606)+36.5; //用当前xsign变换出x
x=longopoint*Math.cos(Math.asin(ysign/longopoint)-0.1606)+27.5;
}还有 本来我想换成float型,可是java的三角函数 开平方函数只能用double型 郁闷
而且
float a;
a=a+0.05;//这个报错 为什么啊还请帮助则个
do
{
if (planenum==0)
break;
xyuan=xsign;
yyuan=ysign;
xsign=xsign+0.05; //把横坐标微小移动
ysign=Math.sqrt(16-0.0625*xsign*xsign); //用xsign把ysign求出
longthadd=Math.sqrt((xsign-xyuan)*(xsign-xyuan)+(ysign-yyuan)*(ysign-yyuan));//算出增加量
longth=longth+longthadd;
}while(longth<minspeed);
longopoint=Math.sqrt(xsign*xsign+ysign*ysign);
if(xsign<0) //角度 反三角函数变换
{y= longopoint*Math.sin(3.1416-Math.asin(ysign/longopoint)-0.1606)+36.5; //用当前xsign变换出x
x=longopoint*Math.cos(3.1416-Math.asin(ysign/longopoint)-0.1606)+27.5;
}
else{
y=longopoint*Math.sin(Math.asin(ysign/longopoint)-0.1606)+36.5; //用当前xsign变换出x
x=longopoint*Math.cos(Math.asin(ysign/longopoint)-0.1606)+27.5;
}还有 本来我想换成float型,可是java的三角函数 开平方函数只能用double型 郁闷
而且
float a;
a=a+0.05;//这个报错 为什么啊还请帮助则个
你所谓的精确到16位和4位是指什么?
vc6的double小数点后也不可能只是4位,你看到的只是显示出来的而已。