数值与Number
js不区分整数值和浮点数值,所有数值都用浮点数值表示
es新增算术运算符:**
console.log(3**2**2);
//81. 2^2=4,3^4=81 **:指数操作符。从右往左算。
一些易错的情况:
console.log(0/0);
// NaN.
console.log(10/0);
// Infinity 被0整除皆返回Infinity
console.log(Infinity/Infinity);
// NaN 基于±Infinity的加、减、乘、除等算术运算结果依然是±Infinity
console.log(parseInt("A",16));
// 10. 第二个参数描述进制。若无,则返回NaN
若一个负数发生下溢时,返回-0
将非数值转换为数值的函数:
Number( )、parseInt( )和parseFloat( )
console.log(Number(null)); //0
// console.log(Number(Null)); //报错
console.log(Number(undefined)); //NaN
Number:
let num=new Number(10);
console.log(num.toString());
console.log(num.toString(8));
console.log(num.toString(16));
//10,12,a。
// 创建一个Number对象的构造函数。返回数值对象的字符串表示,toString()括号内表示输出的进制,默认十进制
常用方法:
num=new Number(123456);
console.log(num.toLocaleString());
// 123,456 返回数值对象的字符串本地表示
console.log(num.valueOf());
// 123456 返回数值对象的原始数值,是一个number不是object
num=new Number(123.456);
console.log(num.toFixed(2));
// 123.46 返回包含指定小数位数的数值字符串,存在四舍五入
console.log(num.toExponential(2));
// 1.23e+2 返回科学计数法表示的数值字符串。括号内表示小数位数,存在四舍五入
num=99;
console.log(num.toPrecision(1));
console.log(num.toPrecision(3));
// 1e+2,99.0 返回数值最恰当的形式。括号内表示结果中数字的总位数,存在四舍五入
// 该方法本质上会根据数值和精度来确定调用上面两个方法之一
console.log(Number.isFinite(8));
console.log(Number.isFinite(NaN));
console.log(Number.isFinite(5/0));
console.log(Number.isFinite(Infinity));
console.log(Number.isFinite("foo"));
console.log(Number.isFinite("15"));
console.log(Number.isFinite(true));
// 除了第一个是true,其他都是flase。 用于检查一个数值是否有限。若参数不是数值,则返回false
console.log(Number.isNaN("15"));
console.log(Number.isNaN(true));
// 都是false 如果参数类型不是NaN,一律返回false。
console.log(Number.isInteger("15")); //false
console.log(Number.isInteger(12)); //true
console.log(Number.isInteger(12.1)); //false
console.log(Number.isInteger(12.0)); //true
// 判断一个数值是否为整数。参数不是数值,返回false。
function withinErrorMargin(left, right) {
//假设误差为2的-50次方。
return Math.abs(left - right) < Number.EPSILON * Math.pow(2, 2);
}
console.log(0.1 + 0.2 === 0.3); // false
console.log(withinErrorMargin(0.1 + 0.2, 0.3));// true
console.log(1.1 + 1.3 == 2.4); // false
console.log(withinErrorMargin(1.1 + 1.3, 2.4)); // true
// console.log(Number.EPSILON * Math.pow(2, 2));
Math对象及其常用方法:
let nums=[1,2,3,4,5,6];
max=Math.max(...nums);
console.log(max);
// 6 取最大的数
let numss=["a","b","c","d","e","f"];
max=Math.max(...numss);
console.log(max);
// NaN。只能传数值
console.log(Math.ceil(123.456));
console.log(Math.floor(123.456));
console.log(Math.round(124.556));
console.log(Math.fround(123.456));
// 124 123 125 123.45600128173828
// 向上舍 向下舍 四舍五入 返回最接近的单精度(32)位浮点数
console.log(Math.trunc(10,01)); //10
console.log(Math.trunc(10)); //10
console.log(Math.trunc(-10,01)); //-10
console.log(Math.trunc(NaN)); //NaN
console.log(Math.trunc(null)); //0
console.log(Math.trunc()); //NaN
// Math.trunc()用于去除一个数的小数部分,返回整数部分。
console.log(Math.cbrt(8)); //2 用于计算一个数的立方根。
// Math.trunc()对于非数值,其内部会先使用Number( )转换为数值再操作。
// Math.trunc()对于空值和无法截取整数的值,返回NaN。
console.log(Math.sign(10)); //1
console.log(Math.sign(-10)); //-1
console.log(Math.sign(0)); //0
console.log(Math.sign(NaN)); //NaN
console.log(Math.sign("10")); //1
// 用于判断一个数是正数、负数还是零。
// 对于非数值,先将其转换为数值在判断。
// 返回值
// 正数:+1;负数:-1;
// 0:0