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.
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
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