在c中删除多余的小数位数

时间:2013-03-03 03:07:24

标签: c double decimal extra

我遇到了一个小问题。我正在尝试删除c中的额外小数位,这将用于计算。

例如67.98345, 我希望它是67.98

但不仅仅是对于printf语句。我需要双倍实际上是67.98而不是67.98345

2 个答案:

答案 0 :(得分:2)

@ mvp的答案还可以,但它有一个小问题。如果x接近最大双倍幅度,则乘法的中间值可以溢出双倍。解决此问题的另一种方法是:

double intpart, fracpart;

fracpart = modf(x, &intpart);
x_rounded = intpart + round(fractpart * 100) / 100;

答案 1 :(得分:0)

这将舍入到最接近的值:

double x_rounded = round(x*100)/100;

为了完整性,这些将向下或向上舍入:

double x_rounded_down = floor(x*100)/100;
double x_rounded_up   = ceil (x*100)/100;