Javascript Rounding issues
<p>I tried using this:</p>

<pre><code>//var value = "39.99";
//var value = "0.255";
var list = ["39.99", "0.255", "0.306", "0.645", "2.505", "5.726", "9.649", "9.999", "10.01", "0.155", "0.355", "10.05", "14.75", "14.02", "2.405", "14.54","2.485"];


var result;

for( i in list ){
    //result = processRounding(parseFloat(list[i]).toFixed(3));
    //result = parseFloat(list[i]).toFixed(2);
    result = test(parseFloat(list[i]).toFixed(3), 2);
    console.log("RESULT["+i+"]: "+ format("#,##0.00", result));
}

function test(value, precision) {
    var precision = precision || 0,
    neg = value &lt; 0,
    power = Math.pow(10, precision),
    value = Math.round(value * power),
    integral = String((neg ? Math.ceil : Math.floor)(value / power)),
    fraction = String((neg ? -value : value) % power),
    padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');

    return precision ? integral + '.' +  padding + fraction : integral;
}


function processRounding (value){
    //console.log( Math.ceil(value*100) + " " +  Math.ceil(value*100) / 2);
    var remainder = parseFloat(value % 1).toFixed(2);
    var floor     = parseInt(Math.floor(value));
    console.log(floor + " " + remainder);
    if(Math.floor(value) != 0 &amp;&amp; Math.floor(value) &gt; 10){
        if( parseFloat(remainder) &gt; 0.50 || parseFloat(remainder) &gt; 0.05 ){
            console.log("CEIL");
            value = Math.ceil(value*10)/10;
        }else{
            value = value;
        }          
    }else{
        if( parseFloat(remainder) &gt; 0.50 || parseFloat(remainder) &gt; 0.05 ){
            console.log("ROUND");
            value = Math.round(value*100)/100;
        }else{
            value = value;
        } 
    }

    return value;
}
</code></pre>

<p>[<a href="http://jsfiddle.net/aabanaag/2JaRY/2/" rel="nofollow">jsFiddle here</a>]</p>

<p>But the problem I see is that when the value is something like <code>"2.405"</code> what it does is simple make it "2.40" regardless if I use either the function <code>test</code> or the function <code>processRounding</code> in my jsfiddle example.</p>

<p>Any Ideas on how to make the result into 2.41? Technically It should round up right since the last digit is "5".</p>

<p><strong>UPDATE</strong></p>

<p>using <code>result = test(parseFloat(list[i]).toFixed(3), 2);</code></p>

<pre><code>var list = ["39.99", "0.255", "0.306", "0.645", "2.505", "5.726", "9.649", "9.999", "10.01", "0.155", "0.355", "10.05", "14.75", "14.02", "2.405", "14.54","2.485"];
</code></pre>

<p>would result to this :</p>

<pre><code>RESULT[0]: 39.99
RESULT[1]: 0.26 
RESULT[2]: 0.31 
RESULT[3]: 0.65 
RESULT[4]: 2.51 
RESULT[5]: 5.73 
RESULT[6]: 9.65 
RESULT[7]: 10.00 
RESULT[8]: 10.01 
RESULT[9]: 0.16 
RESULT[10]: 0.36
RESULT[11]: 10.05
RESULT[12]: 14.75
RESULT[13]: 14.02
RESULT[14]: 2.40
RESULT[15]: 14.54
RESULT[16]: 2.49 
</code></pre>

<p>Notice that in the list there is a "2.405" value which in the result[14] it is "2.40" it should be in 2.41 right?</p>
