#include<iostream.h>
void main()
{
int i;
i=3.3/1.1;
cout<<3.3/1.1<<endl;//结果输出是3
cout<<i<<cin.get();//结果输出却是2!请教高手,为什么???????
}

解决方案 »

  1.   

    3.3/1.1如果按精确计算来说应该是3,但是其值往往不是很精确,当其为2.9999……时,由于接受变量为int型,所以会舍掉小数部分,成为2。
      

  2.   

    应该是
    double i;
    i=3.3/1.1;
    这就可以了
      

  3.   

    int i;
    i=3.3/1.1 + 0.5; //保证四舍五入
      

  4.   

    要注意格式的变化,浮点运算不要用整型,你运行
    int i;
    i=3.3/1.1;
    cout<<3.3/1.1<<endl;//结果输出是3
    printf("the result of i=%.8f",i);//看看有什么?所以最好不要在运算中牵扯到类型转换