JSFiddle - React, Tailwind, and code Playground
by aabanaag
HTML
<script src="http://javascript-number-formatter.googlecode.com/files/format.20110630-1100.min.js"></script>
JavaScript
//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 < 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 && Math.floor(value) > 10){
if( parseFloat(remainder) > 0.50 || parseFloat(remainder) > 0.05 ){
console.log("CEIL");
value = Math.ceil(value*10)/10;
}else{
value = value;
}
}else{
if( parseFloat(remainder) > 0.50 || parseFloat(remainder) > 0.05 ){
console.log("ROUND");
value = Math.round(value*100)/100;
}else{
value = value;
}
}
return value;
}