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.
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, soRound(2.5)returns 3.Floorrounds down to the step andCeilrounds up.- The step defaults to 1.
Qlik example
Round(Price, 0.01) // 2 decimals
Round(Qty, 5) // nearest 5
Floor(Amount, 1000) // band start
Ceil(Hours, 0.25) // bill per quarter hourPower BI equivalent
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
= 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 andNumber.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
ROUNDrounds away from zero.Round(-2.5)in Qlik andROUND(-2.5, 0)in DAX can differ, so test negative values when they matter. - Negative values. DAX
FLOOR(x, 1000)andMROUND(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) * smatches Qlik's Floor for both signs. With a positive step,CEILINGrounds negatives up toward zero, like Qlik's Ceil. For the nearest multiple of a negative value, useROUND(x / 5, 0) * 5and 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
- Round - script and chart function (Qlik Help)
- Floor - script and chart function (Qlik Help)
- ROUND function (DAX) (Microsoft Learn)
- MROUND function (DAX) (Microsoft Learn)
- CEILING function (DAX) (Microsoft Learn)
- Number.Round (Power Query M) (Microsoft Learn)
Related pages
Class(Age, 10)
Class (bucketing into bins)
Qlik's Class() puts a number into a fixed-width bin and returns a dual: a label such as 20<=x<30 plus the lower bound as the number. Power BI has no single function for this. Build a bin column with FLOOR (or Number.RoundDown) plus a label and a sort-by column, or use the built-in Groups and bins feature.
Partial / different approach
Num(Sales, '#,##0.00')
Num, Text and number formatting
In Qlik, Num(x, '#,##0.00') returns a dual: the number stays sortable and summable and only the display changes. DAX FORMAT() returns text, which breaks sorting, aggregation and chart axes. The right translation is usually a measure or column format string, not a function. Use FORMAT only for labels.
Partial / different approach
Floor(OrderTimestamp) AS OrderDate
Splitting timestamps into date and time
Qlik developers split timestamps with Floor() for the date and Frac() for the time, partly to save memory. Do the same in Power Query with DateTime.Date and DateTime.Time. It makes the date join to the calendar table and reduces column cardinality in VertiPaq, so the reason is the same in both tools.
Direct equivalent
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.