BookmarkSubscribeRSS Feed
Dontik
Obsidian | Level 7

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!

6 REPLIES 6
TomKari
Onyx | Level 15

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

Dontik
Obsidian | Level 7

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.

ChrisHemedinger
Community Manager

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.

It's time to register for SAS Innovate! Join your SAS user peers in Las Vegas on April 16-19 2024.
Dontik
Obsidian | Level 7
Unfortunately, my SAS says "unrecognized SAS option name, DECIMALCONV" 😕
ChrisHemedinger
Community Manager

DECIMALCONV= was added in SAS 9.4. 

It's time to register for SAS Innovate! Join your SAS user peers in Las Vegas on April 16-19 2024.
Astounding
PROC Star

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.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 6 replies
  • 1769 views
  • 1 like
  • 4 in conversation