java对浮点型是怎么处理的?

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:49:18

class KKK
{
public double sum()
{
double sum=0.0,i=0.01;
for(i=0.00;i<=1.0;i+=0.01)
{
sum+=i;

}

return sum;
}

public static void main(String args[])
{
double result;
KKK a=new KKK();
result=a.sum();
System.out.println("0.01至1.0的和"+result);
}
}

这道题应该得50.50可是却得49.50 不知道为什么 所以我才问的

java里double型的最后一次的结果差不多是这样:0.99000000000000X,也就是说比0.99要大那么一点点,所以+0.01的话就大于1.0了,所以其实=1.0这一步其实是不会执行的,比你预想的少+了一次。
关键是你问的问题根本就是浮点型,但你代码里是双精度型,你要是真用了float型也就不会有这个问题了,结果也差不多是50.5了

你问得好有品位

如果要完全解释你这个问题 我要拷贝一本书到这里...