极简三分钟ES6 - 数值的扩展

更直观的数值表示法

二进制与八进制新写法

前缀 0b(二进制)和 0o(八进制),直接表达数值本质

js 复制代码
const binary = 0b1101; // 二进制 → 十进制 13 
const octal = 0o755;   // 八进制 → 十进制 493 

用途 :替代ES5混乱的八进制前缀 0,避免严格模式报错

数值检测的精准化

Number.isFinite()

检查是否为有限数值 (排除 InfinityNaN

js 复制代码
Number.isFinite(42);         // true 
Number.isFinite(Infinity);   // false 

比全局 isFinite() 更严格(不会转换非数值类型)

Number.isNaN()

精准识别 NaN(非数值)

js 复制代码
Number.isNaN(NaN);        // true 
Number.isNaN("hello");    // false(全局isNaN会误判)

优势 :避免字符串等类型被误判为 NaN

Number.isInteger()

判断是否为整数(包括 5.0 这类形式)

js 复制代码
Number.isInteger(5.0);    // true 
Number.isInteger(5.1);    // false 

注意 :非数值类型将直接返回 false

安全数值与精度控制

安全整数范围

JS能精确表示的整数范围:-2^53 + 12^53 - 1

js 复制代码
Number.MAX_SAFE_INTEGER; // 9007199254740991 
Number.MIN_SAFE_INTEGER; // -9007199254740991 

Number.isSafeInteger() 检测是否在安全范围内

js 复制代码
Number.isSafeInteger(9007199254740992); // false(超出精度)

场景:金融计算、大数处理

最小精度常量 Number.EPSILON

解决浮点数计算误差(如 0.1 + 0.2 ≠ 0.3

js 复制代码
function equal(a, b) {{
  return Math.abs(a  - b) < Number.EPSILON;
}}
equal(0.1 + 0.2, 0.3); // true 

原理 :定义一个可接受的误差阈值(约 2.22e-16

Math对象的新工具

Math.trunc()

直接切除小数部分(不四舍五入)

js 复制代码
Math.trunc(3.9); // 3(对比Math.floor() 负数行为不同)

场景:快速取整

Math.sign() 判断数值符号

js 复制代码
Math.sign(10);    // +1 
Math.sign(-5);    // -1 
Math.sign(0);     // 0 

返回值正数=>1负数=>-10=>0

立方根计算 Math.cbrt()

js 复制代码
Math.cbrt(8); // 2(2³=8)

其他一些实用扩展

方法 作用 示例
Number.parseInt() 同全局parseInt()(规范化) Number.parseInt('10x') → 10
Math.fround() 返回32位单精度浮点数 Math.fround(1.337) → 1.3370000123291016
Math.hypot() 计算直角三角形的斜边长度 Math.hypot(3, 4) → 5
相关推荐
晚霞的不甘23 分钟前
Flutter for OpenHarmony构建全功能视差侧滑菜单系统:从动效设计到多页面导航的完整实践
前端·学习·flutter·microsoft·前端框架·交互
黎子越24 分钟前
python相关练习
java·前端·python
摘星编程35 分钟前
用React Native开发OpenHarmony应用:StickyHeader粘性标题
javascript·react native·react.js
A_nanda39 分钟前
c# 用VUE+elmentPlus生成简单管理系统
javascript·vue.js·c#
天天进步20151 小时前
Motia事件驱动的内核:深入适配器(Adapter)层看消息队列的流转
javascript
北极糊的狐1 小时前
若依项目vue前端启动键入npm run dev 报错:不是内部或外部命令,也不是可运行的程序或批处理文件。
前端·javascript·vue.js
XRJ040618xrj1 小时前
Nginx下构建PC站点
服务器·前端·nginx
We་ct1 小时前
LeetCode 289. 生命游戏:题解+优化,从基础到原地最优
前端·算法·leetcode·矩阵·typescript
有诺千金2 小时前
VUE3入门很简单(4)---组件通信(props)
前端·javascript·vue.js
2501_944711432 小时前
Vue-路由懒加载与组件懒加载
前端·javascript·vue.js