Forum Discussion
DAX function not calculating decimal values correctly.
I have a simple DAX function and have realized that powerBi doesn't calculate the values correctly. It rounds off to nearest integer. i have tried multiple suggestions (as mentioned below), but none of them work.
Original calculation. -
So, calculation I am expecting is -
var1 > 5 &&var1 <= 10, 80 + ((var1 - 5) / 5 * (-10)),
- Anonymous1 year ago
abansalgeoforce, Looks like Power BI is auto-converting the result to a fixed decimal with low precision at some point in the DAX chain.
13 Replies
- bhanu_gautamSuper User
abansalgeoforce You can force the calculation to be treated as a decimal by explicitly converting the values to decimals.
DAX
score_custom =
VAR var1 = table[column1] * 1.0RETURN
SWITCH(
TRUE(),
ISBLANK(var1), 100,
var1 >= 0 && var1 <= 1, 100 + ((var1) / 1.0 * (-10)),
var1 > 1 && var1 <= 5, 90 + ((var1 - 1) / 4.0 * (80 - 90)),
var1 > 5 && var1 <= 10, 80 + ((var1 - 5) / 5.0 * (-10)),
var1 > 10 && var1 <= 15, 70 + ((var1 - 10) / 5.0 * (60 - 70)),
60
)Instead of direct division, you can use the DIVIDE function to handle division operations and ensure decimal precision.
DAX
score_custom =
VAR var1 = table[column1]RETURN
SWITCH(
TRUE(),
ISBLANK(var1), 100,
var1 >= 0 && var1 <= 1, 100 + DIVIDE(var1, 1.0) * (-10),
var1 > 1 && var1 <= 5, 90 + DIVIDE(var1 - 1, 4.0) * (80 - 90),
var1 > 5 && var1 <= 10, 80 + DIVIDE(var1 - 5, 5.0) * (-10),
var1 > 10 && var1 <= 15, 70 + DIVIDE(var1 - 10, 5.0) * (60 - 70),
60
)- AnonymousNot applicable
Did not solve the issue with the same problem Im having similar to the original question.
- Ashish_MathurSuper User
Hi,
Share some data to work with and show the expected result. Share data in a format that can be pasted in an MS Excel file.
- abansalgeoforceFrequent Visitor
Thanks for you response. However, even with DIVIDE function i get the same values (0.40 instead of 0.366)
- AnonymousNot applicable
Hi abansalgeoforce,
This is definitely a formatting issue, not a DAX calculation issue.
To resolve this: Go to Format, increase Decimal places from 2 to at least 3 or more.Regards,
Vinay Pabbu
- abansalgeoforceFrequent Visitor
column1 here is set to decimal with 3 precision.
And the below calculation is giving me value 0.40 instead of 0.33
"var1 > 5 &&var1 <= 10, (var1 - 5) / 5" ,
var1= 6.66
(6.66-5)/5 = 1.66/5 = 0.332.
Even if its rounding to 2 decimals, i should get value as 0.33. However, the value i finally get is 0.40.
The final measure (for which DAX formula i provided above) is set to decimal,2. However, with the interim calculation not being correct, the value is 0.40 instead of 0.33.