一个JAVA float和 double相除结果与计算器计算不等的问题?
public class Promotion{
public static void main(String args[]){
byte b=10;
char c='a';
int c1=(int)c;
int i=90;
long l=555L;
float f=3.5f;
double d=1.234;
float f1=f*b;
int i1=c+i;
long l1=l+i1;
double d0=f1/i1;
double d1=f1/i1-d;
System.out.println("c="+c);
System.out.println("c1="+c1);
System.out.println("f1="+f1);
System.out.println("i1="+i1);
System.out.println("l1="+l1);
System.out.println("d0="+d0);
System.out.println("d1="+d1);
}
}
程序如上,运行的结果:
c=a
c1=97
f1=35.0
i1=187
l1=742
d0=0.1871657818555832
d1=-1.0468342181444168
用电脑自带的计算器计算结果如下:
d0=0.18716577540106951871657754010695
d1=-1.046834224598930481283422459893
注意:程序运行计算结果和计算器计算结果d0在小数点后第八位出现不同.
这是什么原因造成的呢?请高手赐教~谢谢
java的float和double是不精确的
如下面代码
for(double d = 10000000000000000.0; d<100000000000000001.0;d++){
System.out.println(d);
}
看上去应该只会打印一次,不过运行之后会发现这是个死循环。因为d++对这么大的double就和没有加一样。
10-04-10
| 添加评论
| 打赏
◆◆
请登录后再发表评论!
◆◆