double sum = 0;
double a = 0;
for (int i = 0; ; i++)
{
sum += a;
if (a == 1.00)
{
break;
}
a += 0.01;
}
System.out.println(sum);为什么显示不出结果??

解决方案 »

  1.   

    说实话真没见过这么写的.
    第二个是循环判断标志,不写还真不知道是一直运行还是报错还是不运行
    for (int i = 0; ; i++)
      

  2.   


    呃,啥意思,我不用   a    来限制循环了吗?当   a == 1 的时候就   break了啊为什么会是死循环呢???
      

  3.   

    应该是精度问题,二进制有时候不能精确表示的
    if里面的可以这样写:
    if(Math.abs(a-1.00)<10e-5)另外,你的书写习惯不太好,这个i有什么用?直接for(;;)或者while(true),或者将a放进for里面
      

  4.   

    这写法也太不规范了吧  直接进入死循环了。 double 类型  转换a==1.00?还值得商榷
      

  5.   

    lz你这里a定义的是double类型
    a += 0.01永远不会等于1.00
    你自己把a打印出来就明白了public class TestFloat { public static void main(String[] args) {
    double sum = 0;
    double a = 0;
    for (int i = 0;; i++) {
    sum += a;
    System.out.println(a);
    System.out.println(a == 1.00);
    if (a == 1.00) {
    break;
    }
    a += 0.01;
    }
    System.out.println(sum); }}
      

  6.   


    惭愧,在下从学Java开始不到3个月,不懂之处颇多,多谢指点了!
      

  7.   

    不知道你什么时候想跳出for循环,至少给个判断条件呗
      

  8.   


    public class Test
    {
         float sum = 0;
         for (int float = 0.01f; i <= 10.f; i += 0.01f)
         {
              sum += i;
         }
         System.out.println(sum);
    试试吧!
      

  9.   


    非常感谢,OK了!不过是i<= 1.0f不是10f,O(∩_∩)O哈哈~