BookmarkSubscribeRSS Feed
deleted_user
Not applicable
Hi
I am trying to run below sas code and its giving me unexpected result.Can I have help on this.


In both case1 and case2 val3 is assigned -600 but the value of val4 derived from the format is differing.


proc format;
Value u33mbchg

low - -600 = ' 94.7649 '

-600 <- -200 = ' 95.8705 '

-200 <- -100 = ' 99.4335 '

-100 <- high = ' 100.9247 ' ;

run;



case1:

Data T1;

val1=sum(440.0001,0.01);

val2=sum(1040.0001,0.01);

val3=Sum(0,val1)-Sum(0,val2);

val4 = 1*put(val3,u33mbchg.);

run;

output
val1=440.0101
val2=1040.0101
val3=-600
val4=94.7649




Using the above proc format we ran the same code with different input value in val1 and val2 as below:

case2:
Data T1;

val1=sum(440.1,0.01);

val2=sum(1040.1,0.01);

val3=Sum(0,val1)-Sum(0,val2);

val4 = 1*put(val3,u33mbchg.);

run;

output:
val1=440.11
val2=1040.11
val3=-600
val4=95.8705
1 REPLY 1
Olivier
Pyrite | Level 9
This rather looks like a rounding problem, than a format problem.
ROUNDing the result of your VAL3 variable to, say, 0.0001 would work just fine.

val3=ROUND (Sum(0,val1)-Sum(0,val2), .0001) ;

See problems and discussions about SAS rounding in the documentation :
http://support.sas.com/onlinedoc/913/getDoc/fr/lrcon.hlp/ a000695157.htm (you have to suppress the space character in the web adress, but if I don't type it, I have .ht displayed instead of .htm).

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

Creating Custom Steps in SAS Studio

Check out this tutorial series to learn how to build your own steps in SAS Studio.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 880 views
  • 0 likes
  • 2 in conversation