#include <stdio.h>
#include <math.h>
int pow_i
(int base
, int exp){ int result = 1;
result *= base;
base *= base;
}
return result;
}
float round_float_precision(float x, unsigned digits){
unsigned precision = pow_i(10, digits);
return roundf(x*precision)/precision;
}
int main(void) {
float x = 123.456;
printf("Two digits of precision\n"); printf("- by printf - %.2f\n", x
); printf("- by setting value precision - %f\n", round_float_precision
(x
, 2)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgppbnQgcG93X2koaW50IGJhc2UsIGludCBleHApewogICAgaW50IHJlc3VsdCA9IDE7CiAgICB3aGlsZSAoZXhwKXsKICAgICAgICBpZiAoZXhwICYgMSkKICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CiAgICAgICAgZXhwID4+PSAxOwogICAgICAgIGJhc2UgKj0gYmFzZTsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KCmZsb2F0IHJvdW5kX2Zsb2F0X3ByZWNpc2lvbihmbG9hdCB4LCB1bnNpZ25lZCBkaWdpdHMpewoJdW5zaWduZWQgcHJlY2lzaW9uID0gcG93X2koMTAsIGRpZ2l0cyk7CglyZXR1cm4gcm91bmRmKHgqcHJlY2lzaW9uKS9wcmVjaXNpb247Cn0KCmludCBtYWluKHZvaWQpIHsKCWZsb2F0IHggPSAxMjMuNDU2OwoJcHJpbnRmKCJUd28gZGlnaXRzIG9mIHByZWNpc2lvblxuIik7CglwcmludGYoIi0gYnkgcHJpbnRmICAgICAgICAgICAgICAgICAgLSAlLjJmXG4iLCB4KTsKCXByaW50ZigiLSBieSBzZXR0aW5nIHZhbHVlIHByZWNpc2lvbiAtICVmXG4iLCByb3VuZF9mbG9hdF9wcmVjaXNpb24oeCwgMikpOwoJcmV0dXJuIDA7Cn0K