<?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: Numeric condition error in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809789#M319345</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data bb;
  set aa;
  a_debt_pcent = round(100*a_debt_amt/(a_debt_amt+b_debt_amt),1e-9);
  if 90 &amp;lt; a_debt_pcent &amp;lt; 100;
run;

proc print data=bb;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;PRE&gt;       a_debt_    b_debt_    a_debt_
Obs      amt        amt       pcent

 1       240         20      92.3077
 2        95          5      95.0000&lt;/PRE&gt;</description>
    <pubDate>Mon, 25 Apr 2022 22:28:56 GMT</pubDate>
    <dc:creator>FreelanceReinh</dc:creator>
    <dc:date>2022-04-25T22:28:56Z</dc:date>
    <item>
      <title>Numeric condition error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809771#M319333</link>
      <description>&lt;P&gt;Hi, I am trying to calculate the % of A debt amount within the sum of A + B debt amount, and then I want to filter out % of A debt amount is between 90 - 100% (excluding 90% and 100%). However, in my result, it return answer where a_debt_pcent = 100.. Do you know why even though I excluded 100%?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data aa;
	input a_debt_amt b_debt_amt; 
	datalines;
	10701.54 0
	84256.96 0
	21462.54 0
	240 20
	23876.83 0
	95 5
	396 184
	982 3874
	0 9128
;
run;

data bb;
	set aa;
	a_debt_pcent = 100*a_debt_amt/(a_debt_amt+b_debt_amt);
	if 90 &amp;lt; a_debt_pcent &amp;lt; 100;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;WANT:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;CODE class=""&gt;&lt;FONT face="Arial, Helvetica, sans-serif" color="#333333"&gt;a_debt_amt&lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;TD&gt;&lt;CODE class=""&gt;&lt;FONT face="Arial, Helvetica, sans-serif" color="#333333"&gt;b_debt_amt&lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;TD&gt;&lt;CODE class=""&gt;&lt;FONT face="Arial, Helvetica, sans-serif" color="#333333"&gt;a_debt_pcent&lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;240&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;92.307692308&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;95&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;95&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I am getting (I don't want that, it is wrong):&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;CODE class=""&gt;&lt;FONT face="Arial, Helvetica, sans-serif" color="#333333"&gt;a_debt_amt&lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;TD&gt;&lt;CODE class=""&gt;&lt;FONT face="Arial, Helvetica, sans-serif" color="#333333"&gt;b_debt_amt&lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;TD&gt;&lt;CODE class=""&gt;&lt;FONT face="Arial, Helvetica, sans-serif" color="#333333"&gt;a_debt_pcent&lt;/FONT&gt;&lt;/CODE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10701.54&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;84256.96&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;240&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;92.307692308&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;23876.83&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;95&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;95&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 25 Apr 2022 19:55:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809771#M319333</guid>
      <dc:creator>newboy1218</dc:creator>
      <dc:date>2022-04-25T19:55:46Z</dc:date>
    </item>
    <item>
      <title>Re: Numeric condition error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809775#M319335</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/211631"&gt;@newboy1218&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Computers tend to produce tiny rounding errors in calculations involving non-integer numbers (see &lt;A href="https://documentation.sas.com/?docsetId=lrcon&amp;amp;docsetTarget=p0ji1unv6thm0dn1gp4t01a1u0g6.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_blank" rel="noopener"&gt;Numerical Accuracy in SAS Software&lt;/A&gt; for the details or &lt;A href="https://communities.sas.com/t5/forums/searchpage/tab/message?filter=location,authorId&amp;amp;q=%22numeric%20representation%22&amp;amp;noSynonym=false&amp;amp;location=forum-board:programming&amp;amp;author_id=32733&amp;amp;collapse_discussion=true" target="_blank" rel="noopener"&gt;many examples on this forum&lt;/A&gt;). In your examples it's the division where this happens, but in general even the multiplication by 100 can be affected.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Examples (log from Windows SAS 9.4M5)&lt;FONT face="helvetica"&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;PRE&gt;165   data _null_;
166   if 100*0.07 &amp;gt;   7 then put 'Surprise,';
167   if 55/0.55  &amp;lt; 100 then put 'surprise!';
168   run;

Surprise,
surprise!
NOTE: DATA statement used (Total process time):&lt;/PRE&gt;
&lt;P&gt;In most cases you can avoid such issues by using the ROUND function with an appropriate small rounding unit:&lt;/P&gt;
&lt;PRE&gt;a_debt_pcent = &lt;FONT color="#3366FF"&gt;&lt;STRONG&gt;round(&lt;/STRONG&gt;&lt;/FONT&gt;100*a_debt_amt/(a_debt_amt+b_debt_amt)&lt;STRONG&gt;&lt;FONT color="#3366FF"&gt;,1e-9)&lt;/FONT&gt;&lt;/STRONG&gt;;&lt;/PRE&gt;</description>
      <pubDate>Mon, 25 Apr 2022 20:50:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809775#M319335</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2022-04-25T20:50:09Z</dc:date>
    </item>
    <item>
      <title>Re: Numeric condition error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809778#M319338</link>
      <description>&lt;P&gt;Sorry I don't think this work.. It gives me '50' in all output now =/&lt;/P&gt;</description>
      <pubDate>Mon, 25 Apr 2022 21:21:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809778#M319338</guid>
      <dc:creator>newboy1218</dc:creator>
      <dc:date>2022-04-25T21:21:13Z</dc:date>
    </item>
    <item>
      <title>Re: Numeric condition error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809789#M319345</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data bb;
  set aa;
  a_debt_pcent = round(100*a_debt_amt/(a_debt_amt+b_debt_amt),1e-9);
  if 90 &amp;lt; a_debt_pcent &amp;lt; 100;
run;

proc print data=bb;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;PRE&gt;       a_debt_    b_debt_    a_debt_
Obs      amt        amt       pcent

 1       240         20      92.3077
 2        95          5      95.0000&lt;/PRE&gt;</description>
      <pubDate>Mon, 25 Apr 2022 22:28:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Numeric-condition-error/m-p/809789#M319345</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2022-04-25T22:28:56Z</dc:date>
    </item>
  </channel>
</rss>

