我不能用普通的0.5规则来实现对浮点的舍入 让我们准确一下......我怎么能做出这样的回合:
例如:
1.22 - > 1.2
1.15 - > 1.1(或1.2也好)
1.25 - > 1.2(或1.3也好)
1.16 - > 1.2
我尝试了这些方法(可能是以错误的方式):
但没有什么可以给出这个结果。我总是得到一些x.x99999999的结果,或者是非常圆润的结果(太高,低,或者当数字应该在上面的数字上时偶数)。
答案 0 :(得分:7)
试试这个:
round(x * 10.0f) / 10.0f
答案 1 :(得分:0)
为了避免在@junjanes的好答案中出现溢出,只有在x
有小数部分时才操纵{/ 1}}。
float round_tenth(float x) {
const float limit = 1.0/FLT_EPSILON;
// or limit = FLT_MAX/10.0;
if (fabsf(x) < limit) {
return roundf(x*10.0f)/10.0f;
}
return x;
}