Round(Sales, 0.01)

Round, Floor and Ceil in Power BI

Qlik's Round(x, step, offset) rounds to a multiple of a step such as 0.01 or 5, not to a number of decimal places. DAX ROUND takes digits and MROUND takes a multiple. Watch the tie-breaking: Qlik rounds halves up. DAX ROUND rounds away from zero. Power Query Number.Round uses banker's rounding (round half to even) by default.

Partial / different approach DAX Power Query

Short answer: Round(x, 0.01) becomes ROUND(x, 2), and Round(x, 5) becomes MROUND(x, 5). Floor(x, 10) and Ceil(x, 10) become INT(x / 10) * 10 and CEILING(x, 10). DAX FLOOR and MROUND return an error when the value is negative and the step positive. In Power Query, pass RoundingMode.Up or RoundingMode.AwayFromZero if you need to match Qlik on .5 values.

What it does in Qlik

  • Round(x [, step [, offset]]) rounds to the nearest multiple of step, shifted by offset. Exactly halfway values round upwards, so Round(2.5) returns 3.
  • Floor rounds down to the step and Ceil rounds up.
  • The step defaults to 1.

Qlik example

Qlik script and chart
Round(Price, 0.01)          // 2 decimals
Round(Qty, 5)               // nearest 5
Floor(Amount, 1000)         // band start
Ceil(Hours, 0.25)           // bill per quarter hour

Power BI equivalent

DAX

DAX
Price 2dp    = ROUND ( [Price], 2 )
Qty nearest 5 = MROUND ( [Qty], 5 )
Band start   = INT ( [Amount] / 1000 ) * 1000   -- FLOOR() errors on negative amounts
Billed hours = CEILING ( [Hours], 0.25 )

Power Query

Power Query M
= Number.Round([Price], 2, RoundingMode.AwayFromZero)   // default is ToEven
= Number.RoundDown([Amount] / 1000) * 1000              // Floor(x, 1000)
= Number.RoundUp([Hours] * 4) / 4                       // Ceil(x, 0.25)

Gotchas and behaviour differences

  • Power Query defaults to banker's rounding. Number.Round(2.5) returns 2 and Number.Round(3.5) returns 4. Qlik returns 3 and 4. Reconciliation differences of a cent usually come from this.
  • For negative halves, Qlik rounds "upwards", toward positive infinity, while DAX ROUND rounds away from zero. Round(-2.5) in Qlik and ROUND(-2.5, 0) in DAX can differ, so test negative values when they matter.
  • Negative values. DAX FLOOR(x, 1000) and MROUND(x, 5) return an error when x is negative and the step is positive, because the signs differ. Qlik's Floor and Round accept any sign. INT(x / s) * s matches Qlik's Floor for both signs. With a positive step, CEILING rounds negatives up toward zero, like Qlik's Ceil. For the nearest multiple of a negative value, use ROUND(x / 5, 0) * 5 and check the halves.
  • Formatting isn't rounding. If you only need to show 2 decimals, set the measure's format string and keep the full precision for totals.

Official documentation

Related pages

Spotted an error or a better pattern? QlikToDax is maintained by a working BI consultant; corrections are welcome via the About page. Last reviewed 2026-10-25.