작은 문제가 발생했습니다. C에서 여분의 소수 자릿수를 제거하려고합니다. 계산에 사용됩니다. 예를 67.98345 들어여분의 소수점 이하 자릿수를 C로 내림
, 나는 그냥의 printf 문에 대한 67.98
하지만하지 싶어요. 사실 67.98345
작은 문제가 발생했습니다. C에서 여분의 소수 자릿수를 제거하려고합니다. 계산에 사용됩니다. 예를 67.98345 들어여분의 소수점 이하 자릿수를 C로 내림
, 나는 그냥의 printf 문에 대한 67.98
하지만하지 싶어요. 사실 67.98345
이 라운드 가장 가까운 값으로하지 않습니다 67.98을로 이중이 필요합니다
double x_rounded = round(x*100)/100;
는 완성도를 들어, 이러한 내림 또는 것까지 : MVP의 대답은 @
double x_rounded_down = floor(x*100)/100;
double x_rounded_up = ceil (x*100)/100;
알았어.하지만 사소한 문제가있어. x가 최대 배의 크기에 가까울 경우 곱셈의 중간 값이 double을 오버플로 할 수 있습니다. 이 문제를 해결할 수있는 대체 방법은 다음과 같습니다.
double intpart, fracpart;
fracpart = modf(x, &intpart);
x_rounded = intpart + round(fractpart * 100)/100;
"실제로 이중이되어야 67.98"문제가 있습니다. –