<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Round based on significant figures and decimal places in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910959#M359224</link>
    <description>&lt;P&gt;And just for fun: If you really can't do it with a picture format then there is always the option to use a custom function in a format. That should give you almost "unlimited" options.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc fcmp outlib=work.funcs.myfuncs;
  function sig_figure(in_num);

    s=put(round(in_num,.0001),e32.);

    c=round(input(scan(s,1,'E'),best32.),.01);
    p=input(scan(s,2,'E'),best32.);

    r=c*10**p;
    return(r);
  endsub;
run;
options cmplib=work.funcs;

proc format;
  value sig_num
    other=[sig_figure()]
  ;
quit;

data test;
  infile datalines truncover dsd;
  input have_num want_display :$16.;
  have_num2=have_num;
  datalines;
12.3489,12.3
1.064,1.06
0.000189,0.0002
;

proc print data=test;
  format have_num2 sig_num.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1704784433832.png" style="width: 393px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/92395i65892013D5636563/image-dimensions/393x133?v=v2" width="393" height="133" role="button" title="Patrick_0-1704784433832.png" alt="Patrick_0-1704784433832.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 09 Jan 2024 07:18:06 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2024-01-09T07:18:06Z</dc:date>
    <item>
      <title>Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910940#M359218</link>
      <description>&lt;P&gt;How can I round my data to 3 significant figures with a max of 4 decimal places? It doesn't seem SAS has any format for significant figures.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Jan 2024 23:30:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910940#M359218</guid>
      <dc:creator>mariko5797</dc:creator>
      <dc:date>2024-01-08T23:30:14Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910941#M359219</link>
      <description>&lt;P&gt;To actually round a value:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;myvar= round(myvar, 0.0001)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just for printing (display) without changing the stored value:&lt;/P&gt;
&lt;P&gt;format myvar 16.4;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Jan 2024 23:37:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910941#M359219</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2024-01-08T23:37:37Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910942#M359220</link>
      <description>&lt;P&gt;Can you describe how you round to &lt;STRONG&gt;3&lt;/STRONG&gt; significant figures with &lt;STRONG&gt;4 &lt;/STRONG&gt;decimal places? If you are showing 4 decimals the implication is typically that all 4 decimal places are significant.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;May some before/after examples?&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jan 2024 00:17:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910942#M359220</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2024-01-09T00:17:33Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910945#M359221</link>
      <description>The first condition is 3 significant figures though.&lt;BR /&gt;For example, 12.3489 would be printed as 12.3; 1.064 would be printed as&lt;BR /&gt;1.06; and 0.000189 would be printed as 0.0002.&lt;BR /&gt;</description>
      <pubDate>Tue, 09 Jan 2024 01:24:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910945#M359221</guid>
      <dc:creator>mariko5797</dc:creator>
      <dc:date>2024-01-09T01:24:47Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910955#M359223</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*
You need customize a format by PICTURE.
*/
proc format;
picture fmt(round)
100-high='GE 100'(noedit)
10-&amp;lt;100 ='99.9'
1 -&amp;lt;10  =' 9.99'
0.1-&amp;lt;1='9.999'
low-&amp;lt;0.1='9.9999'
;
run;
data have;
input x;
format x fmt.;
cards;
110
90
12.3489
1.064
0.18912
0.018912
0.0018912
0.000189
;

proc print data=have noobs;run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1704782094353.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/92393i1C3474FF58E3F092/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1704782094353.png" alt="Ksharp_0-1704782094353.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jan 2024 06:35:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910955#M359223</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-01-09T06:35:00Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910959#M359224</link>
      <description>&lt;P&gt;And just for fun: If you really can't do it with a picture format then there is always the option to use a custom function in a format. That should give you almost "unlimited" options.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc fcmp outlib=work.funcs.myfuncs;
  function sig_figure(in_num);

    s=put(round(in_num,.0001),e32.);

    c=round(input(scan(s,1,'E'),best32.),.01);
    p=input(scan(s,2,'E'),best32.);

    r=c*10**p;
    return(r);
  endsub;
run;
options cmplib=work.funcs;

proc format;
  value sig_num
    other=[sig_figure()]
  ;
quit;

data test;
  infile datalines truncover dsd;
  input have_num want_display :$16.;
  have_num2=have_num;
  datalines;
12.3489,12.3
1.064,1.06
0.000189,0.0002
;

proc print data=test;
  format have_num2 sig_num.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1704784433832.png" style="width: 393px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/92395i65892013D5636563/image-dimensions/393x133?v=v2" width="393" height="133" role="button" title="Patrick_0-1704784433832.png" alt="Patrick_0-1704784433832.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jan 2024 07:18:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910959#M359224</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2024-01-09T07:18:06Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910990#M359235</link>
      <description>&lt;P&gt;It’s a maximum of 4 decimal places, so in the event the number is too small,&lt;BR /&gt;e.g., 0.00193, we would display 4 decimal places, i.e., 0.0019. Otherwise, we only display 3 significant figures, e.g., 1.93056 would be displayed as 1.93.&lt;BR /&gt;Does that make sense?&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jan 2024 13:40:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/910990#M359235</guid>
      <dc:creator>mariko5797</dc:creator>
      <dc:date>2024-01-09T13:40:56Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/911000#M359238</link>
      <description>It's not a perfect method as it dropped the negative sign, but I could fix that with an if-then statement. Thank you!</description>
      <pubDate>Tue, 09 Jan 2024 14:19:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/911000#M359238</guid>
      <dc:creator>mariko5797</dc:creator>
      <dc:date>2024-01-09T14:19:25Z</dc:date>
    </item>
    <item>
      <title>Re: Round based on significant figures and decimal places</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/911081#M359263</link>
      <description>&lt;P&gt;If you want to extend to negative number , you could try this fotmat.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
picture fmt(round)
100-high='GE 100'(noedit)
10-&amp;lt;100 ='99.9'
1 -&amp;lt;10  =' 9.99'
0.1-&amp;lt;1='9.999'
0-&amp;lt;0.1='9.9999'

-0.1-&amp;lt;0='09.9999'(prefix='-')
-1-&amp;lt;-0.1='09.999'(prefix='-')
-10 -&amp;lt;-1  ='09.99'(prefix='-')
-100&amp;lt;-&amp;lt;-10 ='099.9'(prefix='-')
low- -100='LE -100'(noedit)

;
run;
data have;
input x;
format x fmt.;
cards;
110
90
12.3489
1.064
0.18912
0.018912
0.0018912
0.000189
-0.000189
-0.0018912
-0.018912
-0.18912
-1.064
-12.3489
-90
-110
;

proc print data=have noobs;run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1704876173603.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/92421iC9F42356741051EF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1704876173603.png" alt="Ksharp_0-1704876173603.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Jan 2024 08:43:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Round-based-on-significant-figures-and-decimal-places/m-p/911081#M359263</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-01-10T08:43:02Z</dc:date>
    </item>
  </channel>
</rss>

