数据类型的转换
转换为数值型
字符型转换为数值型
a = Number(a);//强制转换 纯数字字符 =>数字; 纯字母字符 => NaN; 带字母字符 => NaN; null => 0; undefined => NaN; true => 1; false => 0 (NaN 含义是非数值,它的类型是 number )
NaN 非数值 数值类型
var a = "a";//字符串中只要含有非数字就会转换为NaN,否则就会转换为数值
a = parseInt(a);//转换为整型数值,从开始向后转换,遇到字符停止(如果开始是数值就可以转换)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回 NaN
var a = "101011";
a = parseInt(a,2);//将字符按照指定的进制类型转换,第二个是进制类型
a = parseFloat(a);//转换为浮点数
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回 NaN
布尔型转换为数值型
var a = true; a = Number(a);//强制转换为数值
对象型转换为数值型
console.log(Number({a:1}));//NaN
其他转为数值型
undefined null
var a = undefined; //NaN
var a = null;
a = Number(a); //0
``
转换为字符型
数值转换为字符
a = String(a); //强制转换为字符串
var a =2.556;
a = a.toString(2);//转换为2进制
a = a.toString(36);//将数值按照指定的进制类型转换为字符串,进制2 到 36之间
var a = "4.15"
a = a.toFixed(2);//保留小数点后两位
a = a.toFixed(1);//保留小数点后一位,四舍五入,保留一位有误差
保留一位小数时候,保留一位小数误差最大,十进制转二进制,二进制会取相近的数值,再转到十进制
先除100 取整再乘100
eg var a=3.15;
a=a.toFixed(1);
console.log(a);3.1 注:数值后面的小数点越多,保留一位小数的精度越高
console.log(0.1+0.2 != 0.3);
解决办法
1.限制精确位数
可以限制保留几位小数的方式来避免误差 const num=(0.1+0.2).toFixed(2);
a = a.toPrecision(2);//保留多少位数值
var num = new Number(13.3714);
var a = num.toPrecision();13.3714
var b = num.toPrecision(2);13
var c = num.toPrecision(3);13.4
var d = num.toPrecision(10);13.37140000
a = a.toExponential(2);//保留2位小数 科学计数法
var num = 5.56789;
var n=num.toExponential(3);5.568e+0
a = a.toLocaleString();//本地字符串
var d=new Date();
var n=d.toLocaleString();
n 输出结果:2020/10/8 下午7:30:43
toLocaleString() 方法可根据本地时间把 Date 对象转换为字符串,并返回结果。
科学计数法:绝对值大于10的数记成a*10(n)次方 a大于等于1小于10
布尔值,undefined,null转字符
布尔值 undefined null
转换为字符串toString()
"true" "false"
"undefined"
"null"
//toString 是对象的方法 undefined null不能转换,String所有都可以转
对象转字符
var a = {a:1,b:2};
var a = {a:2,c:4};
a = String(a);
console.log(a);//[object Object] [对象 对象类型]
//任何对象转换字符串都为[object Object]
转换为布尔值
6种false方式
"",0,undefined,null,false,NaN 都是false 除此之外都是true
var a =" ";// 空格字符串 true
// var a = “”;
// if(!a){
// a 有6种取值才能运行if("",0,undefined,null,false,NaN)
// }//遇到! 需要将值转换为布尔值取反(遇到! 优先转换布尔值,没遇到! 优先转换为字符)
``