Adjust the format of the decimal and keep it to two decimal places

  • 2020-03-30 02:57:03
  • OfStack

In the development process, we often encounter to adjust the decimal format, such as keeping two decimal places, and so on. The method is also quite common. Here's a cheat sheet.

First, use math.round

Var what = 28.453
1) //round "original" to two decimals
Var result = Math. Round (the original * 100) / 100; / / returns 28.45
2) // round "original" to 1 decimal
Var result = Math. Round (the original * 10) / 10; / / returns 28.5

The second kind, js1.5 above can use toFixed(x), can specify the number to intercept the x place after the decimal point

3) //round "original" to two decimals
Var result = what toFixed (2); / / returns 28.45

4) // round "original" to 1 decimal
Var result = what toFixed (1); / / returns 28.5

The two methods above are the most common, but they fail to meet some special requirements, such as keeping two decimal places behind, and if there are less than two decimal places, the less than two decimal places will be zero. And here's the third way.

Third, the conversion function, this code from a foreign forum.
 
function roundNumber(number,decimals) { 
var newString;// The new rounded number 
decimals = Number(decimals); 
if (decimals < 1) { 
newString = (Math.round(number)).toString(); 
} else { 
var numString = number.toString(); 
if (numString.lastIndexOf(".") == -1) {// If there is no decimal point 
numString += ".";// give it one at the end 
} 
var cutoff = numString.lastIndexOf(".") + decimals;// The point at which to truncate the number 
var d1 = Number(numString.substring(cutoff,cutoff+1));// The value of the last decimal place that we'll end up with 
var d2 = Number(numString.substring(cutoff+1,cutoff+2));// The next decimal, after the last one we want 
if (d2 >= 5) {// Do we need to round up at all? If not, the string will just be truncated 
if (d1 == 9 && cutoff > 0) {// If the last digit is 9, find a new cutoff point 
while (cutoff > 0 && (d1 == 9 || isNaN(d1))) { 
if (d1 != ".") { 
cutoff -= 1; 
d1 = Number(numString.substring(cutoff,cutoff+1)); 
} else { 
cutoff -= 1; 
} 
} 
} 
d1 += 1; 
} 
if (d1 == 10) { 
numString = numString.substring(0, numString.lastIndexOf(".")); 
var roundedNum = Number(numString) + 1; 
newString = roundedNum.toString() + '.'; 
} else { 
newString = numString.substring(0,cutoff) + d1.toString(); 
} 
} 
if (newString.lastIndexOf(".") == -1) {// Do this again, to the new string 
newString += "."; 
} 
var decs = (newString.substring(newString.lastIndexOf(".")+1)).length; 
for(var i=0;i<decimals-decs;i++) newString += "0"; 
//var newNumber = Number(newString);// make it a number if you like 
document.roundform.roundedfield.value = newString; // Output the result to the form field (change for your purposes) 
} 

5) //round "original" to two decimals
Var result = what toFixed (2); / / returns 28.45

6) // round "original" to 1 decimal
Var result = what toFixed (1); / / returns 28.5

Var what = 28.4
Var result = what toFixed (2); / / returns 28.40

Related articles: