Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Home
- /
- Programming
- /
- SAS Procedures
- /
- Precision issues with Computing Sum and Average PROC MEANS

Options

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

🔒 This topic is **solved** and **locked**.
Need further help from the community? Please
sign in and ask a **new** question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

Posted 09-07-2018 04:10 AM
(1179 views)

Dear Members,

I have encountered a problem while computing sum and mean in SAS for particularly a set of four numbers (0.3, -0.2, -0.1, 0). While I pass these numbers to Proc means the output gives sum as -2.77556E-17 and mean as -6.93889E-18. While actually the sum should be zero and hence the mean should be zero.

I have also tested with different order combination of above 4 numbers (there are 24 combination of arranging different order) where for some of the combination I am getting sum as -5.55112E-17 and mean as -1.38778E-17. The same problem occurs in Proc Summary, even tested with Proc GLM, PROC mixed, which gives different answers in LSmeans.

**But Proc Univariate gives the correct result with mean and sum as zero.**

**If any one can give some insight what is happening with this four magic numbers. Also I have cross checked with Excel and R and facing the same problem for different order combination of above 4 numbers.**

**PS Attached PROC MEANS and PROC UNIVARIATE output for reference.**

**Kind Regards,**

**Rajesh kumar **

1 ACCEPTED SOLUTION

Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

I expect your hitting floating point storage issues as the resulting number is very small:

See Numerical Accuracy in SAS Numbers.

Just make sure you round values.

5 REPLIES 5

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

I expect your hitting floating point storage issues as the resulting number is very small:

See Numerical Accuracy in SAS Numbers.

Just make sure you round values.

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

Many thanks for your quick response!!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

This link gives detailed information Thank you!!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

This is the typical artifact of the conversion of decimal fractions to binary. Do a google search for "SAS numerical precision", and you'll find ample information about what happens behind the scenes, and why it does.

Whenever you work with fractions in SAS, and you need to get a "clean" value for comparisons or such, use the round() function to get rid of the artifacts. Some procedures to that automatically (using "fuzz" factors), others need "manual" intervention.

Note that this is not specific to SAS, but happens in all software that uses real formats for numbers.

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

Thank you for your detailed response!!!

Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

**If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. **

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.