草庐IT

第一百零八篇:最常用的基本数据类型(Number类型)

养肥胖虎 2023-03-28 原文

好家伙,

本篇内容为《JS高级程序设计》第三章学习笔记

 

1.Number类型

从名称中我们可以得出,这是一个存放数值的类型,

不同的数值类型相应地也有不同的数值字面量格式

 

Number类型可以储存不同进制的数(不常用就是了)

 八进制:在数前加一个零("0"),后续的数字中不能有大于7的数值,否则八进制无效

十六进制:在数字前加一个零x("0x"),后面不可跟随超出十六进制的数,否则会十六进制无效

 

 

1.1.浮点值

定义浮点值,数值中必须包含小数点,而且小数点后面必须至少有一个数字

小数点前可以没有数字,但推荐加上。

(看上去有些奇怪,但可行)

let a = 0.1;
let b = .1;
console.log(a,b);

 

 

 

 因为存储浮点值使用的内存空间是存储整数值的两倍,所以ECMAScript总是想方设法把值转换为整数。

在小数点后面没有数字的情况下,数值就会变成整数。

类似地,如果数值本身就是整数,只是小数点后面跟着0(如1.0),那它也会被转换为整数,

 

let a = 10.0;
let b = 10.;
console.log(a, b);

 

 

 1.2.科学计数法

使用科学计数法使数字表达更简洁

其中在数字后面加上e10表示乘以10的十次方

同理,e-10表示十的负十次方

let result=Number.MAX_VALUE +Number.MAX_VALUE;

console.log(isFinite(result)); // false 

 

 

虽然超出有限数值范围的计算并不多见,但总归还是有可能的。因此在计算非常大或非常小的数值时,有必要监测一下计算结果是否超出范围。

注意 使用 Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY 也可以获 取正、负Infinity

没错,这两个属性包含的值分别就是-Infinity和Infinity。

 

 

1.4.NaN(Not a Number)和Infinity

NaN是一个特殊数值,就像他的翻译一样-----"不是数字",

用于表示本来要返回数值的操作失败了(比如说某某数除以零,但并不抛出错误) 

比如说0除以零,但并不抛出错误,而是返回NaN,

而自然数除以0时,就是Infinity(无限)

console.log(1/0);
console.log(+0/-0);

 

 

 

1.4.1.isNaN()方法 

isNaN()方法用于判断一个数是否为NaN,(是否"不是数值"),

他首先会调用对象的valueOf()方法,然后再确定是否可以转换为数值.

如果不能,再调用toString()方法.并测试其返回值

console.log(isNaN(0/0));
console.log(isNaN(100));
console.log(isNaN("true"));  //true  不可以被转化为数字一
console.log(isNaN(true));    //false  可以被转化为数字一

 

 

 

 

1.5.数值转换

Number()方法可以将非数值转换为数值,

Number()方法可用于任何类型数据

(1)布尔值————true转换为1,false转换为0

(2)数值————直接返回(你是来找茬的把?)

(3)null————直接返回0

(4)undefined————返回NaN

(5)字符串————

1.如果有进制表示字符与数字组合,那么转换为相应进制的数字

2.空字符串,返回0,

3.包含其他任何非进制表示字符,返回NaN

 

(6)对象————调用valueOf方法,并按照上述规则转换返回的值,如果转化的结果是NaN,

则调用toString()方法,再按照字符串转换规则转换

 

来看看例子:

let a = Number(true);
let b = Number(87);
let c = Number(null);
let d = Number(undefined);
let e = Number("panghu");
console.log(a, b);
console.log(c, d, e);

 

有关第一百零八篇:最常用的基本数据类型(Number类型)的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  4. ruby - 检查方法参数的类型 - 2

    我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  7. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  8. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  9. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  10. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

随机推荐