Desktop productivity for business analysts and programmers

SAS loses decimal accuracy

Reply
Contributor
Posts: 33

SAS loses decimal accuracy

[ Edited ]

Hi

I have a weird problem. I am operating on numbers which add up to around 800 000 000. I have a dataset which I need to split into minidatasets with 1000 000 records. The problem is that when I split my dataset, I loose decimal precision, for example:

Befote splitting the sum of my costs was 810268311.8536920

After splitting - 810268311.8401380

Splitted datasets have the total number of records equal to number of records which was in the initial table.

What can I do about that?

Thank you in advance!

PROC Star
Posts: 1,334

Re: SAS loses decimal accuracy

Your numbers never had the accuracy. The 8 byte floating point numeric format used by SAS can only hold up to fifteen significant digits accurately. Your numbers have sixteen digits; you will lose precision on the sixteenth and above digits.

 

Tom

Contributor
Posts: 33

Re: SAS loses decimal accuracy

[ Edited ]

Hmm so what is there to do about that? Can I at least keep the number at 0.01 decimal precision? 810268311.85 - so that I could get this exact number after splitting, I do not need anything more precise. I"ve tried adding round(cost,0.01) to my data step which splits the data but that didn't help.

Community Manager
Posts: 3,464

Re: SAS loses decimal accuracy

There is an exhausting treatise on this topic here:

The behavior of SAS is the same as any software that relies on floating point math, defined by an IEEE standard.

 

There is a newer DECIMALCONV= option that might help.  From the doc:

 

DECIMALCONV=STDIEEE

specifies to convert and format decimal values by using the IEEE Standard for Floating-Point Arithmetic 754-2008. Using the STDIEEE argument improves the accuracy and readability of floating-point numbers. In some cases, more significant digits can be displayed in the same field width.

Contributor
Posts: 33

Re: SAS loses decimal accuracy

Unfortunately, my SAS says "unrecognized SAS option name, DECIMALCONV" :/
Community Manager
Posts: 3,464

Re: SAS loses decimal accuracy

DECIMALCONV= was added in SAS 9.4. 

Super User
Posts: 6,935

Re: SAS loses decimal accuracy

To the extent you can work with integers instead of decimal fractions, the results will improve.  If it would be practical, try:

 

  • Multiply costs * 1000
  • Sum up the new costs
  • Divide the totals by 1000

Those totals should be closer.

Ask a Question
Discussion stats
  • 6 replies
  • 224 views
  • 1 like
  • 4 in conversation