java float 相除_一个JAVA float和 double相除结果与计算器计算不等的问题?

一个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在小数点后第八位出现不同.

这是什么原因造成的呢?请高手赐教~谢谢

67b0a70febe552c922c54bb8560d6ef6.png

e6a83bd248ce3e833976228260871850.png

java的float和double是不精确的

如下面代码

for(double d = 10000000000000000.0; d<100000000000000001.0;d++){

System.out.println(d);

}

看上去应该只会打印一次,不过运行之后会发现这是个死循环。因为d++对这么大的double就和没有加一样。

10-04-10

| 添加评论

| 打赏

◆◆

请登录后再发表评论!

◆◆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值