반올림 모드
숫자를 유한 정밀도로 표현하면 가능한 범위 내의 숫자 전체를 정확히 표현할 수 없습니다. 고정소수점 숫자에 연산을 수행한 결과는 대개 원래 숫자 형식보다 더 긴 레지스터에 저장됩니다. 이 결과를 다시 원래 형식으로 되돌리려면 반올림 방법을 사용해서 해당 값을 표현 가능한 숫자로 형변환합니다. Fixed-Point Designer™는 자신의 설계에 적합한 반올림 모드를 선택할 때 비용과 정확도를 서로 유연하게 조정할 수 있도록 다음 7가지 반올림 모드를 제공합니다.
Ceiling— 양수 무한대 방향으로 올림합니다.Convergent— 표현 가능한 가장 가까운 값으로 반올림합니다. 반올림 경계에 놓인 숫자인 경우 가장 가까운 짝수로 반올림합니다.Floor— 음수 무한대 방향으로 내림합니다.Nearest— 표현 가능한 가장 가까운 값으로 올림 또는 내림합니다.Round— 표현 가능한 가장 가까운 숫자로 반올림합니다. 반올림 경계에 놓인 숫자인 경우 값의 부호에 따라 반올림합니다.Simplest(Simulink®에만 해당) — 효율적인 코드 생성을 위해 여러 반올림 기법을 결합합니다.Zero— 필요한 정밀도를 초과하는 자릿수를 버립니다.
반올림 모드를 선택하는 방법에 대한 자세한 내용은 Choose a Rounding Mode 항목을 참조하십시오.
반올림 모드 지정하기
Data Type Conversion 블록 같은 고정소수점 Simulink 블록에 대해 정수 반올림 모드 파라미터를 사용하여 반올림 모드를 지정할 수 있습니다.

MATLAB®에서는 각 반올림 모드에 대응하는 다음 함수가 제공됩니다.
fimath 객체를 생성할 때도 반올림 모드를 지정할 수 있습니다.
Ceiling
올림(Ceiling) 방향으로 반올림하면 양수와 음수가 모두 양의 무한대 방향으로 올림됩니다. 그로 인해 숫자에 양의 누적 편향이 발생합니다.
ceil 함수를 사용하여 올림 방향으로 반올림할 수 있습니다.

Convergent
수렴(Convergent) 반올림은 표현 가능한 가장 가까운 값으로 반올림합니다. 반올림 경계에 놓인 숫자인 경우 가장 가까운 짝수로 반올림하여 반올림으로 인한 편향을 제거합니다. 하지만 이 반올림 방법에서는 오버플로 가능성이 있습니다.
convergent 함수를 사용하여 수렴 반올림을 수행할 수 있습니다.

Floor
내림(Floor) 방향으로 반올림하면 양수와 음수가 모두 음의 무한대 방향으로 내림됩니다. 그로 인해 숫자에 음의 누적 편향이 발생합니다.
floor 함수를 사용하여 내림 방향으로 반올림할 수 있습니다.

Nearest
최근접(Nearest) 모드는 숫자를 표현 가능한 가장 가까운 값으로 반올림합니다. 반올림 경계에 놓인 숫자인 경우 최근접 반올림은 양의 무한대 방향으로 표현 가능한 가장 가까운 숫자로 올림합니다.
nearest 함수를 사용하여 최근접 반올림을 수행할 수 있습니다.

Round
반올림(Round) 반올림은 표현 가능한 가장 가까운 숫자로 반올림합니다. 반올림 경계에 놓인 숫자인 경우 다음과 같이 반올림합니다.
양수는 양의 무한대 방향으로 표현 가능한 가장 가까운 숫자로 올림합니다.
음수는 음의 무한대 방향으로 표현 가능한 가장 가까운 숫자로 올림합니다.
그 결과는 다음과 같은 현상이 있습니다.
음수 샘플의 경우 작은 음수 편향이 발생합니다.
양수 값과 음수 값이 균일하게 분포된 샘플의 경우 편향이 발생하지 않습니다.
양수 샘플의 경우 작은 양수 편향이 발생합니다.
round 함수를 사용하여 이 유형의 반올림을 수행할 수 있습니다.

Simplest
최대단순(Simplest) 반올림 모드는 생성 코드에서 추가적인 반올림 코드를 줄이거나 제거하려고 시도합니다. Simplest 반올림 모드가 반올림 동작을 어떻게 조정하는지에 대한 자세한 내용은 Use Simplest Rounding for Efficient Generated Code 항목을 참조하십시오. 거의 모든 경우 최대단순 반올림 모드에서 가장 효율적인 코드가 생성됩니다. 이 반올림 모드는 Simulink에서만 사용 가능합니다.
Zero
계산적 측면에서 가장 간단한 반올림 모드는 0 방향으로 반올림하는 것입니다. 필요한 숫자 외의 모든 숫자가 버려집니다. 0 방향으로 반올림한 숫자는 항상 그 크기가 원래의 더 정확한 값보다 작거나 같습니다.
0 방향으로 반올림하면 양수의 경우 하향의 누적 편향이, 음수의 경우 상향의 누적 편향이 발생합니다. 즉, 모든 양수는 더 작은 양수로 내림되고, 모든 음수는 더 큰 음수로 올림됩니다.
fix 함수를 사용하여 0 방향으로 반올림할 수 있습니다.

0 방향 반올림과 자르기 비교
0 방향 반올림과 자르기는 같은 의미로 간주되기도 합니다. 하지만 부호 없는 2의 보수 숫자에 대해 0 방향의 반올림과 자르기를 하면 결과가 각각 다릅니다.
예를 들어, 부호 없는 5비트 숫자에서 최하위 비트 2개를 잘라서 0 방향으로 반올림하는 경우를 살펴보겠습니다. 부호 없는 숫자 100.01 = 4.25는 100 = 4로 잘립니다. 따라서 부호 없는 숫자에 자르기를 수행하면 0 방향으로 반올림(Zero) 또는 내림(Ceiling)한 결과와 동일합니다.
이제 2의 보수 5비트 숫자에서 최하위 비트 2개를 잘라서 반올림해 보겠습니다. 2의 보수 숫자 100.01 = -3.75를 0 방향으로 반올림하면 -3.00이 됩니다. 하지만 이진 워드에서 마지막 두 자릿수를 제거하여 잘림을 수행하면 100.01 = -3.75는 100 = -4가 되며, 이는 내림(Floor)한 결과와 동일합니다.
참고 항목
ceil | convergent | floor | nearest | round | fix