Hey,
Can someone explain in plain English how the comparedigits function works?
Would really appreciate, if you can provide a use case as well!
Thanks in advance,
James.
---------
Below is an extract on comparedigits from the alteryx help:
CompareDigits(a,b, nNumDigits) Compares 2 numbers and determines if they are the same to the given number of digits. The comparison finds the difference between the numbers and reports A and B the same when the leading digit of the difference is NumDigits or more places to the right of the digits of the larger of A and B.
The NumDigits argument must not be null, and must be between 1 and 19, otherwise an error will result. If a non-integer is given, it is rounded to the nearest integer. (NumDigits can be between 0.5 and 19.499)
Example
CompareDigits(12345, 12444, 3)returns "True"
CompareDigits(12345, 123445, 3)returns "False"
CompareDigits(12.345, 12.347, 3)returns "True"
CompareDigits(12.345, 12.435, 3) returns "True"
CompareDigits( .91234, .91334, 3) returns “False”
I found the post where Ned introduced the feature. Here's what he said:
Ned wrote:CompareDigits is the more useful function. CompareDigits(a,b,10) will return true if the 1st 10 significant digits of a and b are the same. That works equally well for comparing 1.7==1.7 as 1.7e50==1.7e50. CompareDigits is definitely the preferred way of comparing two numbers that may be anything other than integers.
https://community.alteryx.com/t5/Engine-Works-Blog/New-in-5-0-Comparing-Numbers/ba-p/1925
The logic seems to follow sequential rounding from right to left.
CompareDigits(12345,12444,3)
12345 : 12444
12350 : 12440
12400 : 12400 = true
CompareDigits(0.91234,0.91334,3)
0.91234 : 0.91334
0.91230 : 0.91330
0.91200 : 0.91300 = false
Thanks @CharlieS for your quick response. Can you please walk me through the below examples please?
CompareDigits(123574,128478,2)
CompareDigits(0.91234. 0.91334, 3)
CompareDigits(12345, 123445, 3)
Hmmm, the first two expressions you listed break my explanation. You might have to reach out to support@alteryx.com on this one.