#include <stdio.h>
#include <math.h>
float xf_round1_f(float input, int prec) {
int trunc
= round
(input
* pow(10, prec
)); input
=(float)trunc
/ pow(10, prec
); input=nextafterf(input, input+1.0);
return (input);
}
int main(void) {
xf_round1_f(49.975002f, 3);
xf_round1_f(49.980000f, 3);
xf_round1_f(49.985001f, 3);
xf_round1_f(49.990002f, 3);
xf_round1_f(49.995003f, 3);
xf_round1_f(50.000000f, 3);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgpmbG9hdCB4Zl9yb3VuZDFfZihmbG9hdCBpbnB1dCwgaW50IHByZWMpIHsKICAgIHByaW50ZigiJWZcdCIsaW5wdXQpOwogICAgaW50IHRydW5jID0gcm91bmQoaW5wdXQgKiBwb3coMTAsIHByZWMpKTsKICAgIHByaW50ZigiJWZcdCIsKGZsb2F0KXRydW5jKTsKICAgIGlucHV0PShmbG9hdCl0cnVuYyAvIHBvdygxMCwgcHJlYyk7CiAgICBwcmludGYoIiVmXHQiLGlucHV0KTsKICAgIGlucHV0PW5leHRhZnRlcmYoaW5wdXQsIGlucHV0KzEuMCk7CiAgICBwcmludGYoIiVmXG4iLGlucHV0KTsKICAgIHJldHVybiAoaW5wdXQpOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICB4Zl9yb3VuZDFfZig0OS45NzUwMDJmLCAzKTsKICAgIHhmX3JvdW5kMV9mKDQ5Ljk4MDAwMGYsIDMpOwogICAgeGZfcm91bmQxX2YoNDkuOTg1MDAxZiwgMyk7CiAgICB4Zl9yb3VuZDFfZig0OS45OTAwMDJmLCAzKTsKICAgIHhmX3JvdW5kMV9mKDQ5Ljk5NTAwM2YsIDMpOwogICAgeGZfcm91bmQxX2YoNTAuMDAwMDAwZiwgMyk7CiAgICByZXR1cm4gMDsKfQo=