(x*100+0.5)得到的是放大100倍的一个小数,且如果千分位上大于等于5将自动在个位数加1
这样只要取得这个小数的整数部分就可以实现将小数点后第3位四舍五入,保留小数点后两位的
所以:
(int)(x*100+0.5)是得到小数的的整数部分,(int)(x*100+0.5)/100.0是得到原来大小的小数
这个好像是类型转换问题
float roundfloat(float val){
#if 0
float val = 37.777779;
float rounded_down = floorf(val * 100) / 100; /* Result: 37.77 /
float rounded_up = ceilf(val * 100) / 100; / Result: 37.78 /
#endif
float nearest = roundf(val * 100) / 100; / Result: 37.78 */
return nearest;
}
比较标准的做法如上面这样。