浮点型的有关问题

浮点型的问题
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{ double c;
  double a=0.1;
  c=a*10; //输出我1
  cout<<c<<endl;
  if(10*a==1)
  cout<<"ok"<<endl;
  else
  cout<<"no"<<endl; 
  system("PAUSE");
  return EXIT_SUCCESS;
} 显示永远都是 no
  我知道是浮点型的精度问题,但是到底是什么原因?请各位帮助一下菜鸟我!

------解决方案--------------------
探讨
不用==根本编译通不过,加了那几个头文件也不行!