I recently got annoyed comparing data that showed no difference even when displaying (supposedly) all possible digits .
Using long formats was not enough; I had to derive the difference AND use a long format to finally unhide the difference in value.
Consider:
data _null_;
X=input('409D593333333333',hex16.);
Y=input('409D593333333334',hex16.);
Z=X-Y;
putlog X 32.20 / Y 32.20 /@1 Z 32.20;
run;
1878.30000000000000000000 1878.30000000000000000000 -0.00000000000022737368
Am I mistaken thinking that this behaviour is unintended, and that X and Y should be shown with a different value when using a long format?
I know that the difference is the 17th digit, which is beyond numerical precision. That's not the point. We have a difference at the end of the number, we should see it when displaying the whole number.
Y is the badly rounded value by the way, but you wouldn't know it by looking at the 3 lines above. You need further computations.
Just one piece of the pie here ... the 15-digits of precision limit that is often mentioned is for integers. Decimal fractions may be imprecise with less than 15 digits.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.