1

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

例如 67.98345,我希望它是 67.98

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

4

2 回答 2

2

@mvp 的回答还可以,但有一个小问题。如果 x 接近最大 double 幅度,则乘法的中间值可能会溢出 double。解决此问题的替代方法是:

double intpart, fracpart;

fracpart = modf(x, &intpart);
x_rounded = intpart + round(fractpart * 100) / 100;
于 2013-03-03T03:23:02.380 回答
0

这将四舍五入到最接近的值:

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

为了完整起见,这些将向下或向上取整:

double x_rounded_down = floor(x*100)/100;
double x_rounded_up   = ceil (x*100)/100;
于 2013-03-03T03:12:17.497 回答