Oracle Number Rouding Issue
<p>We need to <strong>Round Half-UP</strong> the following NUMBER:</p>

<pre><code>28.854623
</code></pre>

<p>So, the 'expected' steps are:</p>

<pre><code>1) 28.854623
2) 28.85462
3) 28.8546
4) 28.855
5) 28.86
</code></pre>

<p>But, the result from the ROUND function appears to be wrong:</p>

<pre><code>SELECT ROUND(28.854623, 2) FROM DUAL;
Result&gt; 28.85
</code></pre>

<p>If we execute with 3 decimals places, the result is as expected:</p>

<pre><code>SELECT ROUND(28.854623, 3) FROM DUAL;
Result&gt; 28.855
</code></pre>

<p>If we ROUND to 3 places, and then to 2 places, the results are also the expected:</p>

<pre><code>SELECT ROUND (ROUND (28.854623, 3), 2) FROM DUAL
Result&gt; 28.86
</code></pre>

<p>Could anybody explains me why this behavior? Isn't the ROUND function making a TRUNC on the (N+1) Decimal place and then, Round the result, something like this:</p>

<pre><code>ROUND(TRUNC(VALUE, N+1), N)
</code></pre>

<p>Thanks!</p>