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;