[求助]一个关于2.1/1.9和1.9/2.1的问题
											今天遇到这样一个问题
#include<iostream>
#include<iomanip>
#include<cstring>
using namespace std;
void main()
{
    int i,n=0;
    double x=1,y1=2.1/1.9,y2=1.9/2.1;
    for(i=1;i<22;i++)
        x=x*y1;
    while(x!=1.0)
    {
        x*=y2;
        n++;
    }
    cout<<n<<endl;
}
输出结果为21.
实验证明当将所有的double改成long double时,结果还是21
但是改成float时就会死循环。
我觉得是和机器内的浮点数的最多小数位数有关。但是不甚理解
请大侠们指点

 
											





 
	     
										
					
	
 
											




