js系列-number类型详解

JavaScript Number 对象 Number对象是 JavaScript 中非常重要的一个对象,它为 JavaScript 提供了丰富的数字处理能力。通过了解Number对象的相关知识,可以更好地进行 JavaScript 编程。 阅读详情

#定义

    //字面量方式
    let a = 11;
    //对象方式
    let b = new Number(11);
    console.log(typeof a);//number
    console.log(typeof b);//object
    
    //对象方式取值
    console.log(b.valueOf());//11

#基本函数

判断是否为整数

    console.log(Number.isInteger(11));//true
    console.log(Number.isInteger(1.1));//false

指定返回的小数位数可以四舍五入

console.log(1.36.toFixed(1));//1.4

取整,不四舍五入

console.log(Number.parseInt(1.6));//1

NaN

表示无效的数值,我们代码中参与计算时会遇到的问题,下例计算将产生NaN结果。

    //NaN是number类型
    console.log(typeof NaN);//number
    //Number,转换成number
    console.log(Number('abc'));//NaN
    //非数字参与运算,返回NaN
    console.log(2 / 'abc');//NaN

NaN不能使用 == 比较,使用以下代码来判断结果是否正确

    let nan = 3 / 'abc';
    console.log(Number.isNaN(nan));//true

也可以使用 Object.is 方法判断两个值是否完全相同

var res = 2 / 'abc';
console.log(Object.is(res, NaN));

类型转换

Number

使用Number函数基本上可以转换所有类型

console.log(Number('abc')); //NaN
console.log(Number(true));	//1
console.log(Number(false));	//0
console.log(Number('9'));	//9
console.log(Number([]));	//0
console.log(Number([5]));	//5
console.log(Number([5, 2]));	//NaN
console.log(Number({}));	//NaN

parseInt

提取字符串开始去除空白后的数字转为整数。这个是个很有意思的静态方法,可以提取字符串中的数字,但只能提取以数字开头的字符串,否则为NaN

console.log(parseInt('  123abc'));	//123
console.log(parseInt('a123bc'));	//NaN
console.log(parseInt('12.3'));	//12

parseFloat

转换字符串为浮点数,忽略字符串前面空白字符。

 console.log(parseFloat('  123abc'));	//123
 console.log(parseFloat('a123bc'));	//NaN
 console.log(parseFloat('12.3'));	//12.3

比如从表单获取的数字是字符串类型需要类型转换才可以计算,下面使用乘法进行隐式类型转换。当然我们也可以用上面的Number显示(强制)转换

<input type="text" name="num" value="12">
<script>
 let num = document.querySelector("input").value;
    console.log(num + 3); //123

    console.log(num * 1 + 3); //15
</script>

舍入操作

使用 toFixed 可对数值舍入操作,参数指定保存的小数位

console.log(1.234.toFixed(2)); //1.23

浮点精度

大部分编程语言在浮点数计算时都会有精度误差问题,下面来看JS中的表现形式

let hd = 0.1 + 0.2
console.log(hd)// 结果:0.30000000000000004

这是因为计算机以二进制处理数值类型,上面的0.1与0.2转为二进制后是无穷的

console.log((0.1).toString(2)) //0.0001100110011001100110011001100110011001100110011001101
console.log((0.2).toString(2)) //0.001100110011001100110011001100110011001100110011001101

处理方式

一种方式使用toFixed 方法进行小数截取

console.log((0.1 + 0.2).toFixed(2)) //0.3

console.log(1.0 - 0.9) //0.09999999999999998
console.log((1.0 - 0.9).toFixed(2)) //0.10

将小数转为整数进行计算后,再转为小数也可以解决精度问题

Number.prototype.add = function (num) {
	//取两个数值中小数位最大的
  let n1 = this.toString().split('.')[1].length
  let n2 = num.toString().split('.')[1].length
  
  //得到10的N次幂
  let m = Math.pow(10, Math.max(n1, n2))

  return (this * m + num * m) / m
}
console.log((0.1).add(0.2))

推荐做法

市面上已经存在很多针对数学计算的库 mathjs 、decimal.js 等,我们就不需要自己构建了。下面来演示使用 decimal.js 进行浮点计算。

<script src="https://cdn.bootcss.com/decimal.js/10.2.0/decimal.min.js"></script>

<script>
	console.log(Decimal.add(0.1, 0.2).valueOf())
</script>

Math

Math 对象提供了众多方法用来进行数学计算,下面我们介绍常用的方法,更多方法使用请查看 MDN官网 了解。

取极限值

使用 min 与 max 可以取得最小与最大值。

console.log(Math.min(1, 2, 3));

console.log(Math.max(1, 2, 3));

使用apply 来从数组中取值

console.log(Math.max.apply(Math, [1, 2, 3]));

舍入处理

取最接近的向上整数

console.log(Math.ceil(1.111)); //2

得到最接近的向下整数

console.log(Math.floor(1.555)); //1

四舍五入处理

console.log(Math.round(1.5)); //2

random

random 方法用于返回 >=0 且 <1 的随机数(包括0但不包括1)。

返回0~5的随机数,不包括5

const number = Math.floor(Math.random() * 5);
console.log(number);

返回0~5的随机数,包括5

const number = Math.floor(Math.random() * (5+1));
console.log(number);

下面取2~5的随机数(不包括5)公式为:min+Math.floor(Math.random()*(Max-min))

const number = Math.floor(Math.random() * (5 - 2)) + 2;
console.log(number);

下面取2~5的随机数(包括5)公式为:min+Math.floor(Math.random()*(Max-min+1))

const number = Math.floor(Math.random() * (5 - 2 + 1)) + 2;
console.log(number);

下面是随机点名的示例

let stus = ['小明', '张三', '王五'];
let pos = Math.floor(Math.random() * stus.length);
console.log(stus[pos]);

随机取第二到第三间的学生,即1~2的值

let stus = ['小明', '张三', '王五', '爱情'];
let pos = Math.floor(Math.random() * (3-1)) + 1;
console.log(stus[pos]);

 

 

 

 

JavaScript Number 对象详解 Number对象是JavaScript中常用的内置对象之一,它提供了丰富的属性和方法,方便我们对数值进行操作。掌握Number对象的相关知识,将有助于我们更好地进行JavaScript编程。本文对Number对象的属性、方法以及应用进行了详细讲解,希望对您有所帮助。 阅读详情

相关推荐

number.js:JavaScript 数字库

数字.js JavaScript 数字库

JavaScript基本数据类型之Number

????数值型:Number 在JS中所有的数值都是 Number 类型,包括整数和浮点数(小数)。 var a = 100; // 定义一个变量 a,并且赋值整数100 console.log(typeof a); // 输出变量 a 的类型 var b = 12.3; // 定义一个变量 b,并且赋值浮点数 12.3 console.log(typeof a); 上方代码的输出结果为: number number 再次补充:在 JS 中,只要是数,就是 Number 数值型的。无论整浮、浮

小小前端攻城狮的博客 1214

PlatformIO串口监视器波特率配置实战:从乱码到清晰输出的关键步骤

本文针对PlatformIO串口监视器常见的乱码问题,深入解析了其根源在于波特率不匹配。文章核心在于指导开发者通过修改项目根目录下的platformio.ini配置文件,正确设置monitor_speed参数,确保与代码中Serial.begin()的波特率一致,从而实现从乱码到清晰输出的关键步骤。此外,还介绍了其他实用的串口监控配置与常见避坑指南。

weixin_29183637的博客 388

JavaScript — 数据类型之 Number数字类型

目录 数字类型 1.编写数字的更多方法 2.十六进制、二进制、八进制数字 3.toString(base)方法 4.舍入 5. isNaN 和 isFinite 6. parseInt 和 parseFloat 7.其他数学函数 (1).Math.random (2).Math.max(a,b,c...) 和 Math.min(a,b,c...) (3).Math.pow(n,power) 数据类型指...

m0_59897687的博客 5325

在MDK5.37版本中添加Complier Version 5( 解决Missing Compiler Version 5 )

本文章仅作为个人学习记录,方法也是从其他博主的博客中得到的,链接如下:二、Keil——Missing Compiler Version 5 和 core_cm3.c 问题解决 - YI颗白菜 - 博客园 (cnblogs.com) 问题描述 更新最新的keil版本(MDK5.37)后,在编译以前版本的工程文件时,发现出现了非常多的报错,在网上搜索之后发现原来时编译器版本不匹配的问题,即MDK5.37中使用的是Version 6版本的编译器,而缺少Version 5,对于以前编写的工

leveling99的博客 1万+

从ISO 17987到SAE J2602:LIN一致性测试标准全景解读与CANoe实现

本文深入解析了从ISO 17987到SAE J2602的LIN一致性测试标准技术演进,详细对比了两大标准体系的技术差异,并基于Vector CANoe平台演示了如何构建符合最新行业要求的自动化测试方案。文章重点介绍了SAE J2602标准的三大改进点,包括唤醒特性、传输层协议和诊断服务的增强测试要求,并提供了CANoe测试环境配置、测试模块集成及测试案例解析的实战指南。

app77的博客 333

【JavaScript】 数值 Number

与其他对象一样,对象上面可以自定义方法,被Number的实例继承。 - `Number()` 将任意值转为数值: `Number`本身是一个函数,可以当作工具方法使用,将任何类型的值转为数值。 - `Number()` 构造函数: `Number`不仅可以当作工具函数使用,还可以当作构造函数使用,即前面可以使用`new`命令。构造**数值对象**,用于生成值为数值的对象 `Math`是 JavaScript 的原生对象,提供各种数学功能。该对象不是构造函数,不能生成实例,所有的属性和方法都必须在`Math`

小数点儿_ 2272

【UE5】三步搞定Pixel Streaming:从零搭建Windows像素流服务

本文详细介绍了如何在Windows平台上快速搭建UE5 Pixel Streaming像素流服务,从插件安装、项目打包到服务启动的全流程操作。通过实战案例和优化配置,帮助开发者实现零客户端配置、跨设备兼容的高性能3D应用流式传输,特别适合建筑可视化和实时协作场景。

weixin_29000991的博客 318

面试知识点

技术文章 更早之前 利用 javascript 实现富文本编辑器 JS正则表达式完整教程 从0.1+0.2=0.30000000000000004再看JS中的Number类型 前端跨域的整理 前端安全知识 从输入URL到页面加载的过程 虚拟DOM介绍 React常见问题 大公司里怎样开发和部署前端代码 ...

大灰狼的小绵羊哥哥的博客 251

搭建ROS小车真的难吗?

搭建ROS小车真的难吗?不难 1.引言 本着为大家谋福利的心态,根据自己以往的开发经验,打算写一个从零开始制作一个可以实现地图构建和导航的ROS小车。目前某宝上面有很多现成产品,但是我个人认为,一个好的移动机器人开发工程师,应该对机器人的整个流程都能具备维护的能力,然后再深入研究其中一个方向即可。看到网上很少有整个系列的开发教程,看到同学们大多东拼西凑,浪费了不少时间。我就想着利用空余时间,将我本人的开发过程输出给大家。有基础理论、有实际工程代码、有丰富的学习资料,尽最大努力帮大家进入移动机器人的大门。 国

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

YOLO26改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头

本文记录的是基于移动倒置瓶颈 MBConv 的 YOLO26 的检测头轻量化改进方法研究。采用了独特的倒置瓶颈结构,通过的操作以及,在高效提取特征的同时极大地降低了计算量。本文将的设计优势融入j检测头中,使其在目标检测任务中不仅能够更精准地识别各类目标,还能在计算资源有限的情况下快速响应,展现出更为卓越的实时检测能力。EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks的实现代码如下: 首先在代码中加入如下代码: 其

Limiiiing的博客 286

JavaScript系列-08 JS数据类型之Number数据类型

javaScript系列 关于JS中的Number数据类型 文章目录javaScript系列一、Number类型包括哪些值?1.1范围1.2举例1.3关于NaN1.4关于Infinity二、简单了解几个函数2.1 isNaN方法2.2 parseFloat方法2.3 parseInt方法2.4 Math.ceil方法总结 一、Number类型包括哪些值? 1.1范围 -1 0 1 2 2.3 3.14 100 .... NaN Infinity 整数、小数、正数、负数、不是数字、无

m0_46222379的博客 205

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【JavaScript-Day 6】从零到精通:JavaScript 原始类型 String, Number, Boolean, Null, Undefined, Symbol, BigInt 详解

欢迎来到 JavaScript 学习系列的第六篇!在前面的文章中,我们已经了解了 JavaScript 的基本概念、如何在浏览器中运行代码以及变量的声明方式 (varletconst今天,我们将深入探讨 JavaScript 中一个至关重要的基础——原始数据类型 (Primitive Data Types)。理解数据类型是掌握任何编程语言的基石,它能帮助我们更有效地存储、操作和管理数据。本文将详细解析 JavaScript 中的七种原始数据类型,并通过丰富的示例和清晰的解释,助您打下坚实的基础。

吴师兄大模型的博客 962

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

js数据类型之Number类型

最近在学习JavaScript高级程序设计,一直以来都忽略了js的重要性,所以现在开始重点学习一遍,既然已经掌握了基本的开发,那就从数据类型开始写起吧,本系列只是为了个人做笔记,如有错误欢迎提出, 在js中数据类型分为两大类,基本数据类型和复杂数据类型。 数据类型(5+1): 基本数据类型(5):number、boolean、string、null、undefined 复杂数据类型(1):...

qq_28786219的博客 360

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript面试大师_Number类型

《JavaScript面试大师》系列文章的核心在于沿用应试教育的套路,采取:知识点+刷题的模式来加深巩固理解,目的在于斩获心仪offer,更高的目的在于提升对语言本身的理解,达到融会贯通。 Number类型面试题: 为什么0.1 + 0.2 = 0.30000000000000004? 给Number加一个方法newRound,可以保留小数点后n位 (1.23457.newRound(2) —> 1.23) 以下代码输出什么 Number(undefined) ,Number(null) typeof

weixin_52358529的博客 283

JavaScript系列—JS数据类型、类型转换(二)

1. JS数据类型及相关操作 javascript数据类型: Number, String, Boolean, Undefined, Symbol Null Object(obj/[]/{}/null) typeof判断数据类型: "number","string","boolean","undefined","s...

jiaojsun的博客 312

后端返回number类型数据_「前端料包」可能是最透彻的JavaScript数据类型详解

前言 接触写博客有一段时间了,都是边学边学着写,但总感觉写的凌乱,想起啥写啥。这几天在刷红宝书,收获还是蛮多的,决定结合自己的学习,写一个系列,我叫它「前端料包」,旨在巩固前端基础,努力提升自己,同时也乐于做一个分享者。这个系列包括但不限于下面脑图中的内容,目录和发文顺序暂且如下:在讲数据类型之前,想先讲讲变量。JavaScript的变量是松散型的,即可以保存任何类型的数据,在JavaScript...

weixin_39595085的博客 301

Js中Number对象

Js中Number对象 JavaScript的Number对象是经过封装从而能够处理数字值的对象,Number对象由Number()构造器以及字面量声明的值在转化为包装对象时创建,JavaScript的Number类型为双精度IEEE 754 64位浮点类型。 描述 创建一个数字可以通过字面量的方式,通过字面量创建的数字变量在调用方法的时候能够自动转化为临时的包装对象,从而能够调用其构造函数的原型中的方法,也可以利用Number对象生成数值对象,,JavaScript的Number类型为双精度IEEE 75

WindRunnerMax 1198

JavaScript系列基础篇之一: Number类型的几个特殊值

在JavaScript中的Number类型中的几个特殊值: 一: Number.Max_VALUE和 Number.MIN_VALUE 它们定义了Number值集合的边界。所有的数字都必须在这两个值之间(不过计算生成的数值结果可以不落在这两个数之间)。 ­ 二: Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY ...

anshi9320的博客 210

js的数据类型

js的数据类型 什么是数据类型? 从生活中出发: 在日常生活中,描述不同的东西,有不同的一些单位。 实际上,编程也是要解决我们生活中的问题,在程序中,如何描述这些内容呢。针对不同的内容,根据其特性,需要用不同的单位(类型)加以描述,这就是数据类型的概念。 比如,描述人的时候: 姓名:小强 年龄:20 性别:女 为什么要对数据进行分类? 就如垃圾分类一样,当对数据进行分类以后,可以方便管理以及方便操作。 在js中,到底有哪些数据类型? 在js中我们把数据类型分成了两大类: 1.基本数据类型: 1.1

weixin_52346897的博客 2万+

重新巩固JS(一)——JavaScript基本类型

文章目录JavaScript基本类型1. 原始类型:1.1 数值—Number1.2 字符串—String1.3 布尔值—Boolean1.4 字符—Symbol(ES6新增)1.5 Undefined1.6 Null2. 对象类型:2.1 重要的特殊对象3 类型识别 JavaScript基本类型 JS中的基本类型分为原始类型和对象类型两种。 1. 原始类型: 原始类型: Number、Strin...

码飞_CC的博客 1662

JavaScript 学习手册二:JS 数据类型

第1关:JavaScript 数据类型介绍 任务描述 本关任务:在函数 objectTest() 内部定义了六个变量 a、b、c、d、e、f,并已经赋值,你需要判断它们各是什么数据类型。变量 aType、bType、cType、dType、eType、fType 分别表示上面六个变量的数据类型的名字,你需要给他们赋值。比如变量 a 如果是数字类型,需要给变量 aType 赋值字符串 number。可选的数据类型名如下: number、string、bool、object、undefined 和 arra

weixin_54327001的博客 8432

【JavaScript-Day 7】全面解析 Number 与 String:JS 数据核心操作指南

欢迎来到 JavaScript 学习系列的第七篇!在上一篇文章中,我们初步认识了 JavaScript 中的七种原始数据类型,它们是构建程序逻辑的基石。今天,我们将深入探索其中两个最为常用也最为核心的类型:数字 (Number) 和字符串 (String无论您是编程新手还是希望巩固基础的进阶者,理解并熟练运用这两种类型都至关重要。本文将从基础概念入手,逐步深入到核心方法和实际应用场景,帮助您全面掌握它们在 JavaScript 世界中的奥秘。Number。

吴师兄大模型的博客 1032
上一篇: js系列-string字符串,模板字面量
下一篇: js系列-Date时间
前端蜗牛君
博客等级 码龄10年 274粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值