JS操作数字

来源:互联网 发布:jquery 数据可视化 编辑:程序博客网 时间:2024/05/22 07:07

首先要了解JS中几个内置函数的区别。

1.Number()、parseInt()、parseFloat()的区别: 

parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串。如"12.34.56"被转换成"12.34。

Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。用Number()进行强制类型转换将返回NAN, 如果字符串值能被完整地转换,Number()将判断是调用parseInt()还是parseFloat()。

 

测试代码:

<input type="text" id="numberInput" /> <input type="button" value="Number()"onclick="javascript:alert(Number(document.getElementById('numberInput').value));return false" /><p></p><input type="text" id="parseIntInput" /><input type="button" value="parseInt()" onclick="javascript:alert(parseInt(document.getElementById('parseIntInput').value));return false;" /><p></p><input type="text" id="parseFloatInput" /><input type="button" value="parseFloat()" onclick="javascript:alert(parseFloat(document.getElementById('parseFloatInput').value));return false;" />var num = "88.88abc888";document.write(Number(num));                    //NaNdocument.write(parseFloat(num));                //88.88document.write(parseFloat(Number(num)));        //NaN

 

2.Number.toFixed(x) 、 Number.toPrecision(x) 、 Math.Round(x)的区别: 

都有四舍五入的功能。

Number.toFixed(x) 是将指定数字截取小数点后 x 位。

Number.toPrecision(x) 是将整个数字截取指定 x 长度。

注意:一个是计算小数点后的长度,一个是计算整个数字的长度 。 

Math.round(x) 方法把 x 舍入为最接近的整数。

 

测试代码:

<input type="text" id="toFixedInput" /> <input type="button" value="toFixed(2)"onclick="javascript:alert(Number(document.getElementById('toFixedInput').value).toFixed(2));return false;" /><p></p><input type="text" id="toPrecisionInput" /><input type="button" value="toPrecision(2)" onclick="javascript:alert(Number(document.getElementById('toPrecisionInput').value).toPrecision(2));return false;" /><p></p><input type="text" id="roundInput" /><input type="button" value="round()" onclick="javascript:alert(Math.round(Number(document.getElementById('roundInput').value)));return false;" /><p></p>var num = 123.456;    document.write(num.toFixed(1));                 // 123.5    document.write(num.toPrecision(2));             // 1.2e+2  document.write(num.toPrecision(3));             // 123     document.write(Math.round(-4.60));              // -5   document.write(Math.round(num * 10) / 10);      // 123.5    document.write(Math.round(num * 100) / 100);    // 123.46 

   

小数操作:

// 将浮点数四舍五入,取小数点后2位function formatFloat(x) {        var f = Number(x);        if (isNaN(f))         return;            f = Math.round(x*100)/100;        return f;    }    // 保留2位小数,不足补0function formatFloat(x) {        var f = Number(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;    }

 

数字操作:

// 格式化数字,每3位用逗号分割。保留两位小数,需要保留更多小数,可以进行修改function formatNumber(number) {if (isNaN(number)) return "";number = Math.round(number * 100) / 100;if (number < 0) // 负数。Math.floor(x):向下取整; Math.abs(x):取绝对值。return '-' + formatInt(Math.floor(Math.abs(number))) + formatDecimal(Math.abs(number));else // 正数return formatInt(Math.floor(Math.abs(number))) + formatDecimal(Math.abs(number));}// 格式化整数部分,每3位用逗号分割function formatInt(x) {var num = Number(x);if(isNaN(num))return;var number = num.toString();if (number.length <= 3) {return number;}else {var mod = number.length % 3;var rs = (mod == 0 ? '' : number.substring(0, mod));for (i = 0; i < Math.floor(number.length / 3); i++) {if ((mod == 0) && (i == 0))rs += number.substring(mod + 3 * i, mod + 3 * i + 3);elsers += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);}return rs;}}// 格式化小数部分, 保留两位小数function formatDecimal(x) {var num = Number(x);if(isNaN(num))return;var decimal = Math.round((num - Math.floor(num)) * 100);return decimal < 10 ? '.0' + decimal : '.' + decimal;}

 

0 0
原创粉丝点击