javascript数字类型

前端必知必会-JavaScript 数字类型 本文介绍了JavaScript 数字类型的使用,如有问题欢迎私信和评论。 阅读详情

转载来自:http://blog.sina.com.cn/s/blog_538210f30100gkr0.html

javascript是弱类型语言,因此在涉及到从dom节点中取得数字并且加入计算的时候,会有一些类型转换上的问题。本文从类型转换着手,讲解javascript的数字类型。

一..JS的数字类型

   js的数字类型只有一种,叫做Number.js中的所有数字皆属于此类型。包括整数1,-2,3,浮点数1.1,-1.2,1.3都属于此类型。所以,在js中,typof 整数或者 typof 浮点数返回的都是number.

二..JS的类型转换

 js中有三个常用函数用于将非数字类型转换为数字类型,分别是,Number(),parseInt,parseFloat();可以直接在window作用域下调用,用法:

aNumber =  Number(notNumber);

aInt =  parseInt(notNumber);

aFloat = parseFloat(notNumber);

从函数名,可以看出函数的作用来:

Number():可以将非数字转换为数字,转换结果可能为整数,也可能为浮点数

parseInt():将非数字类型转换为数字,转换结果为整数,直接取整,不进行四舍五入运算

parseFloat():将非数字类型转换为数字类型.转换结果为浮点数.

列举一些常见转换:

 “a123”“123a”“abc”“2.2”“2.8”"123a21"
NumberNaNNaNNaN2.22.8NaN
parseIntNaN123NaN22123
parseFloatNaN123NaN2.22.8123

 

从表中我们可以看到常见的转换形式.

那么我们得到从String转换到Number型号的一般规则:
使用parseInt和parseFloat转换时,从左边开始,在遇到第一个非数字,非浮点的字符为止,之间包含的数字,浮点,转换为对应的数字.如果左起第一位即为非数字非浮点的字符,则转换结果直接为NaN.使用Number()转换时,只要包含有非数字和浮点的符号,无论位置,均会转换为NaN.

同时表中也出现了一个奇怪的字符NaN.NaN是一个奇怪的玩意,我们会在后面提到,这里暂时认为当运算无法返回一个正确的数值时,会返回NaN.

三..JS混合类型的计算

最常用到的是Number+String,Float+Int类型,可以用两句话来概括:

不同类型相加(String+Number),结果为简单联结,并且与String或者Number的前后顺序无关.
示例: "2.2"+2  结果 2.22;    2+"2.2"结果22.2
相同类型相加(Number(int)+Number(float)),结果为将较低精度转换为较高精度然后进行运算,也与前后顺序无关
示例:parseInt(2)+parseFloat(2.2) = 4.2 ; parseInt(2)+parseFloat(2.2) = 4.2

除了加法之外的混合运算(-,/等),和加法截然不同(切记):
不同类型的的其他运算(比如String-Number),会将其他非数字类型调用Number方法转换为数字类型,参与运算,前后顺序无关.
例如:"122"-2 =120, 120-"110" =10,"120"/2=60, 2/"1"=2

原因分析:同为数学运算符,为什么+和其他运算符号有如此大的差异呢?原来+在js中不光作为加法符号使用,还有一个更加常用的功能:联结字符串.所以遇到加法符号的时候,js引擎会优先把+作为字符串联结的操作符.因此如果有字符串参与的加法运算,会先把参与运算的其他类型转换为字符串,再执行运算.

四.NaN和Infinity

NaN,在Js中非常特殊.NaN是Number对象的一个属性.我们可以通过Number.NaN来取得.所以NaN严格的来说,不是一个数字,但是又具有一些数字的特征比如 typof NaN 为Number.

1.NaN的类型(typeof)是Number
2.NaN无大小,并且NaN不等于NaN!

比如我们上面表中列出的,将字符串abc转换为数字的时候,得到的结果为NaN.原因是abc在数字中没有对应的值,强制转换为数字类型后,得到NaN.
事实上,

NaN也可以参与运算,在js中是这么处理的:

NaN参与数字运算,结果仍然是NaN.
所以: 1+NaN =NaN,1.5+NaN =NaN
NaN参与混合类型计算,遵守数字类型和非数字类型混合运算的规律:
所以:NaN+"abc" 结果:NaNabc;  “abc”+NaN 结果:abcNaN
NaN不等于NaN
所以:NaN==NaN 结果:false; NaN!=NaN 结果:true ;NaN>NaN||NaN<NaN结果:false(小心,这里也是false)

Js中另外一个特殊的数字叫做Infinity,表示正无穷大.在js中在区间-(+)1.7976931348623157E+10308之外的数字都认为是无穷大(负无穷大).同样的,这句话也有两个含义:

1.Infinity的类型是Number
2.Infinity在js中是有限的,但是只要其大(或小)到一定程度,js就会认为其是无穷.
比如 2/0就会产生Infinity.

同样的Infinity有很多特性,Infinity参与数字运算的结果,我总结了一张表:

Infinity+(*)常数Infinity-(/)常数Infinity-(/)InfinityInfinity+(*)InfinityInfinity==InfinityInfinity!=Infinity
InfinityInfinityNaNInfinitytruefalse

运算规则大体上类似与NaN,但是还有些不同
Infinity参与混合类型计算,遵守数字类型和非数字类型混合运算规律

五.补充的几个方法

JS数字类型的几个方法好像不太见到有人用,我用搜索引擎搜的时候,发现造车轮的程序员还大有人在.
1.Number.toFixed(num);
  用途:取得小数点后num位有效数字,运算中会四舍五入.
   举例: (3).toFixed(3),得到3.000;(3.1415926).toFixed(3) ,结果3.142
2.Number.toPrecision(num)
  用途:取num位有效数字,运算中会四舍五入
  举例: (3).toPrecision(3),得到3.00;(3.1415926).toFixed(4) ,结果3.142

六.月影的几个题目

在搜集资料整理这篇文章的时候,我找到国内的js高手之一月影出的几个关于js的题目,和数字类型相关的几个,我觉得很有意思,列出来给给大家看看,相信如果有人能从头到尾阅读,这几个问题应该是可以迎刃而解的
1.typeof(NaN) ,typeof(Infinity)

2.NaN == NaN
3.NaN != NaN
4.NaN >= NaN
5.parseInt("123abc")
6."123abc" - 0
7.Infinity > 10
8.Infinity > "abc"
9.Infinity == NaN
10.true == 1

说出它们的输出结果
11.
var a = "123abc";
alert(typeof(a++));
alert(a);
12.
var a = "123abc";
a.valueOf = function(){return parseInt(a);}
alert(++a);
alert(a-0);

解析:

1.两个都是Number
2.False
3.true
4.false
5.123
6.NaN.这个略做说明.系统自己进行运算,调用的强制转换方法,是和Number()方法一样的.这个计算因为不是加法,所以先把非数字类型转换成数字类型.Number(“123abc”)的结果是NaN—(文中有提到),而NaN参与数学运算的结果还是NaN.
7.true
8.false .调用Number强制转换"abc"结果为NaN,NaN无大小,与任何数都没办法进行比较.
9.false
10.true .
11.
var a = "123abc";
alert(typeof(a++)); //Number
//调用a++的时候,这里++调用Number()方法强制转换,结果NaN,NaN进行后面的运算,全部还是NaN
alert(a); //NaN
12.
var a = "123abc";
a.valueOf = function(){return parseInt(a);}
alert(++a);//NaN
//调用++a的时候,这里++调用Number()方法强制转换,结果NaN,NaN进行后面的运算,全部还是NaN
alert(a-0);//NaN

YOLOv8实例分割实战:从LabelMe标注到模型训练全流程(附完整代码) 本文详细介绍了YOLOv8实例分割的完整实战流程,涵盖从使用LabelMe进行数据标注、格式转换,到构建数据集、配置参数并完成模型训练的全过程。文章提供了详尽的代码示例和常见问题解决方案,旨在帮助开发者高效掌握YOLOv8实例分割技术,快速应用于实际项目。 阅读详情

相关推荐

Computer Networks 和 Computer & Security投稿经验

论文投稿

qq_50604294的博客 9233

数字类型包括

数字类型

2301_76808053的博客 4933

Seedance2.5本地部署指南:从环境配置到生产优化的完整实践

在 AI 内容生成领域,本地部署方案正逐渐成为开发者和技术团队关注的焦点。Seedance2.5 作为一款支持图像和视频生成的 AI 工具,其完全离线运行的能力解决了云端服务在数据隐私、使用成本和访问稳定性方面的痛点。对于需要处理敏感内容、频繁生成素材或希望完全掌控生成流程的技术人员来说,掌握本地部署方法具有实际价值。 本文将以 Seedance2.5 的本地部署为例,详细介绍从环境准备、依赖配置到运行验证的完整流程,同时深入分析关键参数配置、常见问题排查方法以及生产环境下的优化建议。通过实际部署过程,理解

weixin_33139275的博客 731

js 中的数字类型

数字类型:number类型; 无论是整数还是小数都是数字类型; 不要用小数验证小数; 不要使用NaN判断是不是NaN,应该使用isNaN(值或者是变量); 想要表示十进制:就是正常的数字; 想要表示八进制:以0开头; 想要表示十六进制:0x开头。 //数字类型有范围: 最小值和最大值 console.log(Number.MAX_VALUE);//数字的最大值 console...

luzhaopan的博客 7519

Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测的详细项目实例

这些数据包含了随时间变化她动态信息,具有显著她趋势她、周期她和季节她特征。该模型她核心优势在她其能够自适应地学习数据中她多层次时序信息,捕捉时间序列中她长短期依赖关系,从而提高预测她准确她和可靠她。本项目旨在实她一个基她PTO-TCN-LTTM-TFSttfntion她多变量时间序列预测模型,通过粒子群优化算法优化时间卷积长短期记忆神经网络,并融合注意力机制,提高模型她预测精度和稳定她。本项目模型她实她分为多个阶段,首先她数据预处理,接着她PTO优化,然后她TCN和LTTM网络她构建她训练。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1080

人工智能入门系列之一: 鸢尾花(Iris)多分类的神经网络详解及代码实现

这是最好的时代,我们一起来打造属于自动驾驶汽车上路、无人机飞天、智能机器人管工厂的AI未来 人工智能领域分化为两个阵营:其一是规则式(rule-based)方法,在人工智能早期占主峰;其二是神经网络(neural network)方法,后起之秀。随着硬件水平的提高,算力的指数式增长;人工智能的重心已经从规则式的专家时代转移到神经网络的数据时代。 “神经网络”不选择把人脑熟稔的逻辑规则传授给计算机...

NLP家的码奴小荷的博客 2万+

数据类型之数字类型

数据类型之数字类型 首先看为什么要设置数据类型,每种语言都有其数据类型,包含数据库等都有数据类型,那为什么要对数据分类型呢,其实简而言之,就是不同的数据作用不同,理论上占用的内存资源也不同,我们规范了数据类型,对数据进行分类,就相当于是对资源内存进行了优化,尽可能避免造成内存浪费,所以数据类型的区分,可以看做编程语言的一种系统资源分配优化的方案。 那么Python语言的数据类型有哪些呢?分别有哪些特点,我们一一来学习: Python3 中有六个标准的数据类型: Number(数字) 不可变 Strin

编程界小学生的博客 4470

【音视频处理】MP4、FLV、HLS适用范围,在线视频播放哪个更好

本期我们讨论在线点播的视频格式,对比这些视频格式的优劣以及原因 1、封装格式的作用 2、MP4 3、FLV 4、HLS

池鱼 - YiiGaa 2万+

JS中的数据类型

JavaScript中的基本类型和引用类型在存储和操作上有显著差异。基本类型存储在栈中,按值传递大小固定且速度快;引用类型存储在堆中,按引用传递大小可变且速度相对较慢。这些差异在实际开发中会影响变量的使用和性能优化策略。

2402_85402030的博客 1514

ROS-订阅与处理激光雷达scan话题

激光雷达通常有四个性能衡量指标:测距分辨率、扫描频率(有时也用扫描周期)、角度分辨率及可视范围。测距分辨率衡量在一个给定的距离下测距的精确程度,通常与距离真实值相差在5-20mm;扫描频率衡量激光雷达完成一次完整扫描的快慢,通常在10Hz及以上;角度分辨率直接决定激光雷达一次完整扫描能返回多少个样本点;可视范围指激光雷达完整扫描的广角,可视范围之外即为盲区。

weixin_42438635的博客 4477

k8s上分离集群seatunnel部署(生产推荐)

k8s上分离集群seatunnel部署(生产推荐)

寂夜了无痕的博客 887

js将字母转化数字,将数字转化字母

将字母转换成对应的数字,将数字转化字母

十年树人的博客 5053

软件设计师---钉子户

软件设计师---钉子户

我从不打没有准备的仗! 2万+

副队长JavaScript教程(11)–JS数据类型之数字类型

本文介绍了JavaScript中的数字类型,涵盖整数、小数及其特殊值NaN和Infinity,强调变量命名规范与数学运算功能。重点指出浮点数运算存在精度丢失问题,如0.1 + 0.2结果为0.30000000000000004,该现象非JS独有,需在金额等精密计算中规避。建议合理命名变量,善用console.log调试输出。

编程副队长 1088

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

JavaScript中的数字类型

JavaScript 语言中只有一种数值类型,就是 number 类型,这个类型的值可以选择带小数点或者不带小数点。不像其他语言中还分成了整型、浮点型、长整型、单精度、双精度等等。 数字类型的使用 我们在声明数字类型时,可以带小数点,也可以不带,或者使用科学计数法。 示例: 下面是我们声明的两个 number 类型的变量: var a = 7; var b = 1.25; 在声明数字类型的变量时,不需要加引号,这就是数字类型和字符串类型的区别,例如我们看下面这两个变量: var num1 = 100; v

ivenqin的博客 402

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

28.精讲JavaScript数字类型,你不知道的必考点。

文章目录JavaScript数字类型详解前言数字的写法分隔符省略的0十六、八、二进制toString(base)舍入精度偏差偏差现象偏差原因解决方法Infinity、NaNObject.isparseInt、parseFloatMath对象总结 JavaScript数字类型详解 你真的完全了解JavaScript数字类型吗,看完这篇在回答我! 前言 JavaScript中存在两种表示数字的类型: Number类型,也就是常规意义上的数字类型,以64位的IEEE-754格式存储,属于“双精度浮点数”,截至.

魏大大 2424

JS Number对象常用函数(数字类型常用函数)

返回一个指定精度的数字。表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别。将字符串转换成整型数字,和全局方法。返回指定小数位数的表示形式。

墨痕诉清风的博客 1444

2.3、JavaScript 数据类型 - 数字类型

在 JavaScript 中,数字有两种类型:(1)常规数字类型,以 64 位的格式 IEEE-754 存储,也被称为“双精度浮点数”。这也是我们绝大多数时候使用的数字。(2)BigInt 数字,用于表示任意长度的整数。有时会需要它们,因为常规数字不能安全地超过 2^53 或小于 -2^53。

_ 6232

JavaScript基础: JavaScript 数字类型

JavaScript基础: JavaScript 数字类型

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 334

〖大前端 - 基础入门三大核心之JS篇④〗- JavaScript中的数据类型之数字类型

接下来的一段时间我们将学习 JavaScrip 中的数据类型,话不多说、我们开整,就从 "数字类型" 开始吧。

易编橙 · 终身成长社群,相遇已是上上签! 2万+

JavaScript数字类型深度解析:进制转换与特殊值

JavaScript作为前端开发的核心语言,其数字类型的处理机制直接影响程序运行结果。掌握JavaScript数字类型的进制转换和特殊值处理,是成为优秀开发者的必备技能!本文将带你深入了解JavaScript数字类型的核心概念,通过javascript-in-one-pic项目的可视化学习方式,快速掌握数字类型的精髓。😊 ## 🔍 JavaScript数字类型基础 JavaScript中的

gitblog_01404的博客 436

Javascript数据类型之数字类型

JavaScript数据类型分为基本类型(数字、字符串、布尔、undefined、null)和引用类型(对象)。数字类型包含正负整数和小数,JavaScript是弱类型语言,变量类型由赋值决定。算术运算符包括加减乘除和取余,遵循先乘除后加减的运算顺序。NaN表示非数字值,具有"粘性"特性,任何涉及NaN的运算都会返回NaN。通过计算圆面积的案例,展示了数字类型的实际应用。

王大静的博客 385

js原生判断是否是数字类型

js判断数字类型汇总 最近在写代码的时候,有些逻辑需要判断数字类型,等用到的时候才发现自己了解的方法不太严密,然后就决心查资料汇总了解下有哪些方法比较严密 第一种:typeof + isNaN 使用typeof可以判断是否是一个数字类型,但是NaN也是数字类型,为了筛除这个可能,进一步通过isNaN来筛除。这种方法会遗漏Infinity function isNumber(num) { retu...

yq_giveYouMoney的博客 3374

javascript 判断变量是不是数字类型

需要注意的是,JavaScript 中的数字类型包括整数和浮点数。在使用这些方法时,确保你了解它们的行为和局限性。在 JavaScript 中,你可以使用多种方法来判断一个变量是否是数字类型。函数在判断非数字时可能会出现意外的结果,因此在使用时要小心。在这方面更可靠,但是它仅在 ES6 及更高版本中可用。

servepeople的博客 787

javascript 判断是否数字类型

javascript 判断是否数字类型 var x ="11.11"; parseFloat(x)==x var z ="11" parseInt(z)==z 如果判断为true 说明是数字类型(或者整数类型),否则不是

ISaiSai的专栏 417

判断是否是数字类型php_JavaScript判断输入是否为数字类型

本文主要介绍JavaScript判断输入是否为数字类型的方法总结的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下,希望能帮助到大家。JavaScript判断输入是否为数字类型的方法总结前言很多时候需要判断一个输入是否位数字,下面简单列举集中方法。第一种方法 isNaNisNaN  返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。NaN 即 Not a Num...

weixin_42524703的博客 206

javaScript中的数字类型以及面试题的细节知识

javaScript中的数字类型以及面试题的细节知识 对于其他语言来说,js中的数字类型,新增了两种类型:NaN,[Infinity(正无穷),-Infinity(负无穷); Infinity跟-Infinity在计算机中也算是一个固定的数值,虽然是无穷大,但计算机没有概念,Infinity是比Infinity+1小的,这一点要注意一下。 NaN翻译过来是:不是一个有效数字,但他也是一个数字类型,它不等于任何值,所以就出现了一个方法,就是isNaN,isNaN是判断这个变量是否为NaN的。 在判断的过程中,

Changemyslf的博客 222
上一篇: JS--parseInt(,)方法的使用
下一篇: CSS中的background的详细属性
springk
博客等级 码龄18年 135粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值