bcquality/microsoft/knowledge/data-modeling/round-direction-symbols-use-magnitude.md
Jesper Schulz-Wedde bcc01b3996 Add foundational AL developer knowledge
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-18 15:42:44 +02:00

1.5 KiB

bc-version domain keywords technologies countries application-area
all
data-modeling
round
rounding
direction
precision
negative-decimal
amount
al
w1
all

Round direction symbols follow magnitude, not mathematical ordering

Description

AL's Round(Number, Precision, Direction) uses '>' to round away from zero and '<' to round toward zero. For a negative value this reverses mathematical ordering: Round(-1234.56789, 0.001, '<') returns -1234.567, while direction '>' returns -1234.568. Code that treats the symbols as mathematical ceiling and floor produces sign-dependent amount errors, commonly on credit documents and negative adjustments.

Best Practice

Choose the direction from the business meaning: '>' increases absolute magnitude and '<' decreases absolute magnitude for both positive and negative values. Include positive and negative cases whenever a directed rounding rule is tested.

See sample: round-direction-symbols-use-magnitude.good.al.

Anti Pattern

Using '<' as a mathematical floor or '>' as a mathematical ceiling. The result looks correct for positive amounts but moves in the opposite mathematical direction for negative amounts.

See sample: round-direction-symbols-use-magnitude.bad.al.

Reference

Use the Round function