如何在C中四舍五入浮点值(如37.777779)到小数点后两位(37.78)?
当前回答
...或者你也可以采用传统的方式,不需要任何库:
float a = 37.777779;
int b = a; // b = 37
float c = a - b; // c = 0.777779
c *= 100; // c = 77.777863
int d = c; // d = 77;
a = b + d / (float)100; // a = 37.770000;
当然,如果你想从数字中去除额外的信息。
其他回答
使用%。printf中的2f。它只打印2个小数点。
例子:
printf("%.2f", 37.777779);
输出:
37.77
这个怎么样:
float value = 37.777779;
float rounded = ((int)(value * 100 + .5) / 100.0);
printf("%.2f", 37.777779);
如果你想写入C-string:
char number[24]; // dummy size, you should take care of the size!
sprintf(number, "%.2f", 37.777779);
你仍然可以使用:
float ceilf(float x); // don't forget #include <math.h> and link with -lm.
例子:
float valueToRound = 37.777779;
float roundedValue = ceilf(valueToRound * 100) / 100;
没有办法将一个浮点数四舍五入为另一个浮点数,因为四舍五入的浮点数可能不可表示(浮点数的限制)。例如,假设你将37.777779四舍五入为37.78,但最接近的数字是37.781。
然而,你可以使用格式化字符串函数来“舍入”浮点数。