JavaScript-基本引用类型(原始值包装类型:Number)

一、原始值包装类型:Number

Number 是对应数值的引用类型。要创建一个 Number 对象,就使用 Number 构造函数并传入一个数值

let numberObject = new Number(10);
  • 与 Boolean 类型一样,Number 类型重写了 valueOf()、toLocaleString()和 toString()方法
  • valueOf()方法返回 Number 对象表示的原始数值,另外两个方法返回数值字符串
  • toString()方法可选地接收一个表示基数的参数,并返回相应基数形式的数值字符串。
    toString() 返回数值的十进制字符串表示,可以通过传参,得到数值的二进制、八进制、十六进制或其他任何有效基数的字符串表示
let num = 10; 
console.log(num.toString()); // "10" 
console.log(num.toString(2)); // "1010" 
console.log(num.toString(8)); // "12" 
console.log(num.toString(10)); // "10" 
console.log(num.toString(16)); // "a"

在处理原始数值和引用数值时,typeof 和 instacnceof 操作符会返回不同的结果。原始数值在调用 typeof 时始终返回"number",而 Number 对象则返回"object"。类似地,Number 对象是 Number 类型的实例,而原始数值不是。

let numberObject = new Number(10); 
let numberValue = 10; 
console.log(typeof numberObject); // "object" 
console.log(typeof numberValue); // "number" 
console.log(numberObject instanceof Number); // true 
console.log(numberValue instanceof Number); // false

二、Number 提供的其他将数值格式化为字符串的方法

2.1 toFixed()

toFixed() 方法返回包含指定小数点位数的数值字符串

let num = 10; 
console.log(num.toFixed(2)); // "10.00"

如果数值本身的小数位超过了参数指定的位数,则四舍五入到最接近的小数位数

let num = 10.005; 
console.log(num.toFixed(2)); // "10.01"

注意:toFixed() 方法可以表示有 0~20 个小数位的数值。某些浏览器可能支持更大的范围,但这是通常被支持的范围。

2.2 toExponential()

返回以科学记数法(也称为指数记数法)表示的数值字符串

let num = 10; 
console.log(num.toExponential(1)); // "1.0e+1"

2.3 toPrecision()

如果想得到数值最适当的形式,那么可以使用 toPrecision()

toPrecision() 方法会根据情况返回最合理的输出结果,可能是固定长度,也可能是科学记数法形式。这个方法接收一个参数,表示结果中数字的总位数(不包含指数)

let num = 99; 
console.log(num.toPrecision(1)); // "1e+2" 
console.log(num.toPrecision(2)); // "99" 
console.log(num.toPrecision(3)); // "99.0"

本质上,toPrecision() 方法会根据数值和精度来决定调用 toFixed() 还是 toExponential()。为了以正确的小数位精确表示数值,这 3 个方法都会向上或向下舍入

注意:注意 toPrecision()方法可以表示带 1~21 个小数位的数值。某些浏览器可能支持更大的范围,但这是通常被支持的范围。

2.4 isInteger()方法与安全整数(ES6新增)

ES6 新增了 Number.isInteger()方法,用于辨别一个数值是否保存为整数

console.log(Number.isInteger(1)); // true 
console.log(Number.isInteger(1.00)); // true 
console.log(Number.isInteger(1.01)); // false

IEEE 754 数值格式有一个特殊的数值范围,在这个范围内二进制值可以表示一个整数值。这个数值范围从 Number.MIN_SAFE_INTEGER(-2^53 + 1)到 Number.MAX_SAFE_INTEGER(2^53 + 1)。对超出这个范围的数值,即使尝试保存为整数,IEEE 754 编码格式也意味着二进制值可能会表示一个完全不同的数值。为了鉴别整数是否在这个范围内,可以使用 Number.isSafeInteger() 方法:

console.log(Number.isSafeInteger(-1 * (2 ** 53))); // false 
console.log(Number.isSafeInteger(-1 * (2 ** 53) + 1)); // true 

console.log(Number.isSafeInteger(2 ** 53)); // false 
console.log(Number.isSafeInteger((2 ** 53) - 1)); // true
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天内卷一点点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值