Home > Web Front-end > JS Tutorial > body text

js method to get two digits after the decimal point of float_javascript skills

WBOY
Release: 2016-05-16 17:03:26
Original
1329 people have browsed it

Below we will introduce to you the implementation method of retaining two decimal places in JavaScript:
Rounding
The following processing results will be rounded:

var num =2.446242342;
num = num.toFixed(2); // 输出结果为 2.45
Copy after login

No rounding
The following processing results will not be rounded:
The first method is to round up the decimal side first:

Math.floor(15.7784514000 * 100) / 100  
// 输出结果为 15.77
Copy after login

The second method is to treat it as a string and use regular matching:

Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))  
// 输出结果为 15.77,不能用于整数如 10 必须写为10.0000
Copy after login

Note: If it is a negative number, please convert it to a positive number first and then calculate, and finally convert it back to a negative number

Example of JavaScript retaining two decimal places:

<script type="text/javascript"> 
    //保留两位小数  
    //功能:将浮点数四舍五入,取小数点后2位 
    function toDecimal(x) { 
      var f = parseFloat(x); 
      if (isNaN(f)) { 
        return; 
      } 
      f = Math.round(x*100)/100; 
      return f; 
    } 
 
 
    //制保留2位小数,如:2,会在2后面补上00.即2.00 
    function toDecimal2(x) { 
      var f = parseFloat(x); 
      if (isNaN(f)) { 
        return false; 
      } 
      var f = Math.round(x*100)/100; 
      var s = f.toString(); 
      var rs = s.indexOf('.'); 
      if (rs < 0) { 
        rs = s.length; 
        s += '.'; 
      } 
      while (s.length <= rs + 2) { 
        s += '0'; 
      } 
      return s; 
    } 
     
    function fomatFloat(src,pos){   
       return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);   
    } 
    //四舍五入 
    alert("保留2位小数:" + toDecimal(3.14159267)); 
    alert("强制保留2位小数:" + toDecimal2(3.14159267)); 
    alert("保留2位小数:" + toDecimal(3.14559267)); 
    alert("强制保留2位小数:" + toDecimal2(3.15159267)); 
    alert("保留2位小数:" + fomatFloat(3.14559267, 2)); 
    alert("保留1位小数:" + fomatFloat(3.15159267, 1)); 
     
    //五舍六入 
    alert("保留2位小数:" + 1000.003.toFixed(2)); 
    alert("保留1位小数:" + 1000.08.toFixed(1)); 
    alert("保留1位小数:" + 1000.04.toFixed(1)); 
    alert("保留1位小数:" + 1000.05.toFixed(1)); 
     
    //科学计数 
    alert(3.1415.toExponential(2)); 
    alert(3.1455.toExponential(2)); 
    alert(3.1445.toExponential(2)); 
    alert(3.1465.toExponential(2)); 
    alert(3.1665.toExponential(1)); 
    //精确到n位,不含n位 
    alert("精确到小数点第2位" + 3.1415.toPrecision(2)); 
    alert("精确到小数点第3位" + 3.1465.toPrecision(3)); 
    alert("精确到小数点第2位" + 3.1415.toPrecision(2)); 
    alert("精确到小数点第2位" + 3.1455.toPrecision(2)); 
    alert("精确到小数点第5位" + 3.141592679287.toPrecision(5)); 
  </script> 
Copy after login

Use Javascript to get the two decimal places after the float type. For example, 22.127456 is changed to 22.13. How to do it?

1. Discard the decimal part and keep the integer part

parseInt(5/2)

2. Round up, if there is a decimal, add 1 to the integer part

Math.ceil(5/2)

3, rounded up.

Math.round(5/2)

4, round down

Math.floor(5/2)

Alternative method

1. The stupidest way

Copy code The code is as follows:

function get()
{
var s = 22.127456 "";
var str = s.substring(0,s.indexOf(".") 3);
alert(str);
}

2. Regular expressions work well

Copy code The code is as follows:


3. He is smarter...

Copy code The code is as follows:

<script><br> var num=22.127456;<br> alert( Math.round(num*100)/100);<br> </script>

4. Friends who know how to use new things...but IE5.5 is required to support it.

5.js retains 2 decimal places (mandatory)

For decimal places greater than 2 digits, it is no problem to use the above function, but if it is less than 2 digits, such as: changeTwoDecimal(3.1), it will return 3.1. If you must need a format like 3.10, then you need the following This function:

Copy code The code is as follows:

function changeTwoDecimal_f(x) {
var f_x = parseFloat(x);
If (isNaN(f_x)) {
alert('function:changeTwoDecimal->parameter error');
         return false;
}
var f_x = Math.round(x * 100) / 100;
var s_x = f_x.toString();
var pos_decimal = s_x.indexOf('.');
If (pos_decimal < 0) {
          pos_decimal = s_x.length;
s_x = '.';
}
While (s_x.length <= pos_decimal 2) {
s_x = '0';
}
Return s_x;
}

Function: Round floating point numbers, take 2 digits after the decimal point, if less than 2 digits, add 0,
This function returns the format of the string. Usage: changeTwoDecimal(3.1415926) returns 3.14 changeTwoDecimal(3.1) returns 3.10

Related labels:
js
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template