C++浮点类型计算有误差

int a=32;
float b = a/100.0;
结果b不等于0.32,而是0.319999993
要怎么处理,才能让int a除以100后得到0.32呢?

输入的话可以直接 %.2f,计算的话可以这样处理下

 int a=32;
float b = a/100.0;
 b=( (float)( (int)( (b+0.005)*100 ) ) )/100;  //0.32
 printf("%.2f",b);  //0.32

%.2f

实际上我是做modbus读写,我读到一个数据并除以1000显示在编辑框中,例如value:1234,显示为1.234,到这一步是没有问题的,问题出在我写回数据时。
我把string的“1.234”转为float,再乘以1000,写入modbus,但是在转float的过程中已经产生了误差,导致乘以1000后不是1234。
目前我已经用自己的string处理方案解决了这个问题:
我用的是qt,上述中的string对应为QString

QString s="1.234";
if(s.contains('.')){
  int flag = s.indexOf('.');
  if(3<s.length()-flag){
    s.remove(flag+4,s.length()-flag-4);
    s.remove('.');
  }
  else{
    while(s.length()-flag<4){
      s.append('0');
    }
    s.remove('.');
  }
}
else{
  s.append("000");
}
quint16 res = s.toUInt();
return res;