1、数字转换
1、Number(object):把object转化为数字。如果参数是 Date 对象,Number() 返回从1970年1月1日至今的毫秒数。如果对象的值无法转换为数字,那么 Number() 函数返回 NaN。
在JS里做加法运算的时候,运算结果总是会变成字符串拼接。这个函数就是用来解决这个问题的,例如:var c=Number(0)+Number(1);
推荐这样写。前提是,你得保证object可以转换为数字。
2、isNaN():判断参数是否是非数字,是数字返回false,不是数字返回true;但是参数是空字符串和全是空格的字符串时,返回结果也是false;
3、parseFloat():解析一个字符串参数,并返回一个浮点数。首先它会忽略字符串首尾的空格然后从字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。如果第一个字符串不是数字,则返回NaN;例如:parseFloat(' 40.01abc ');返回值为40.01、parseFloat(' a40.01bc ');返回值为NaN,返回值不一定会以小数形式体现,例如:parseFloat(' 40abc ');返回值为40。
4、parseInt():将字符串参数作为有符号的十进制整数进行解析。(解析过程和parseFloat()类似,忽略首尾空格,从第一个字符开始解析……)如果有两个参数, 使用第二个参数该参数的进制,将字符串参数解析为有符号的整数。例如:parseInt(" 9a ");返回值为9、parseInt(" 11c ",2);返回值为3,‘ 11c ’转化先为数字2进制的数字11,然后再转化为十进制,2进制的11对应的10进制数为3。
二、保留2为小数:
1、四舍五入
var num =2.446242342;num = num.toFixed(2); // 输出结果为 2.45
2、不四舍五入
以下处理结果不会四舍五入。
第一种,先把小数变整数:
Math.floor(15.7784514000 * 100) / 100 // 输出结果为 15.77
第二种,当作字符串,使用正则匹配:
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/));输出结果为 15.77。不能用于整数如 10 必须写为10.0000。如果是负数,请先转换为正数再计算,最后转回负数。
Math.floor()容易出现精度问题,例如:对小数 8.54 保留两位小数(虽然它已经保留了 2 位小数),Math.floor(8.54*100)/100;输出结果为 8.53, 注意是 8.53 而不是 8.54。所以这种函数慎用。