> 백엔드 개발 > C++ > C에서 가장 가까운 배수로 효율적으로 반올림하려면 어떻게 해야 합니까?

C에서 가장 가까운 배수로 효율적으로 반올림하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-11-29 10:45:11
원래의
322명이 탐색했습니다.

How Can I Efficiently Round Up to the Nearest Multiple in C  ?

가장 가까운 배수로 반올림: C의 종합 분석

숫자를 다른 수의 가장 가까운 배수로 반올림하는 작업 프로그래밍에서 흔히 볼 수 있는 것입니다. 이 기사에서는 C에서 이 작업을 수행하는 최선의 접근 방식을 살펴보겠습니다.

원래 구현

일반적으로 사용되는 한 가지 방법은 다음과 같습니다.

int roundUp(int numToRound, int multiple) {
  if (multiple == 0) {
    return numToRound;
  }

  int roundDown = ((int)(numToRound) / multiple) * multiple;
  int roundUp = roundDown + multiple;
  int roundCalc = roundUp;
  return (roundCalc);
}
로그인 후 복사

이 구현은 간단해 보이지만 제한 사항이 있습니다.

  • 긍정적인 경우에만 작동합니다. 숫자입니다.
  • 복잡한 계산이 필요하므로 반올림 오류가 발생할 수 있습니다.

향상된 솔루션

더 나은 접근 방식은 나머지를 계산하는 모듈러스 연산자. 나머지가 0이 아닌 경우 나머지와 배수의 차이를 원래 숫자에 더하여 반올림합니다.

int roundUp(int numToRound, int multiple) {
  if (multiple == 0) {
    return numToRound;
  }

  int remainder = numToRound % multiple;
  if (remainder == 0) {
    return numToRound;
  }

  return numToRound + multiple - remainder;
}
로그인 후 복사

음수의 경우

음수에 대한 "up"의 해석에 따라 함수의 음수 버전이 될 수 있습니다. 필요합니다.

int roundUp(int numToRound, int multiple) {
  if (multiple == 0) {
    return numToRound;
  }

  int remainder = abs(numToRound) % multiple;
  if (remainder == 0) {
    return numToRound;
  }

  if (numToRound < 0) {
    return -(abs(numToRound) - remainder);
  } else {
    return numToRound + multiple - remainder;
  }
}
로그인 후 복사

이 구현은 입력의 부호를 고려하여 양수와 음수를 모두 올바르게 처리합니다. 또한 정수 연산을 사용하므로 효율적이고 정확합니다.

위 내용은 C에서 가장 가까운 배수로 효율적으로 반올림하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿