我遇到了一个小问题。我正在尝试删除 c 中多余的小数位,这将用于计算。
例如 67.98345,我希望它是 67.98
但不仅仅是一个 printf 语句。我需要双倍实际上是 67.98 而不是 67.98345
@mvp 的回答还可以,但有一个小问题。如果 x 接近最大 double 幅度,则乘法的中间值可能会溢出 double。解决此问题的替代方法是:
double intpart, fracpart;
fracpart = modf(x, &intpart);
x_rounded = intpart + round(fractpart * 100) / 100;
这将四舍五入到最接近的值:
double x_rounded = round(x*100)/100;
为了完整起见,这些将向下或向上取整:
double x_rounded_down = floor(x*100)/100;
double x_rounded_up = ceil (x*100)/100;