And rounding is not cheap either, if you round too often.
In Dynamics retail discount engine, the general guideline is not to round when getting the basic discount applications (or discount application multiples) and when calculating discount deal estimate. We round when we applied a discount application and when we total discounts.
To appease retailers with conflicting tastes in rounding and sales line splitting, we introduced a configuration: Keep items on the same sales line for discount price rounding, available in PriceContext. HoldTogetherForDiscountRounding. In short, if true, then allow not-rounded per unit discount amount and do not split; while if false, enforce rounded per unit discount amount, splitting sales lines if necessary, except for scale products with non-integer quantities.
If you are to create a customized discount type, if it is applicable, you will need to make sure you cover both settings of the configuration. We will cover this in another post.
Related: Retail Discount: Rounding I