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)
数据类型指的就是字面量的类型
JavaScript 中有八种基本的数据类型(前七种为基本数据类型,也称为原始类型,而 object 为复杂数据类型)。
- number用于任何类型的数字:整数或浮点数,在 ±(253-1) 范围内的整数。
- bigint 用于任意长度的整数。
- string 用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。
- boolean 用于 true 和 false。
- null 用于未知的值 —— 只有一个 null 值的独立类型。
- undefined 用于未定义的值 —— 只有一个 undefined 值的独立类型。
- symbol 用于唯一的标识符。
- object 用于更复杂的数据结构。
数字类型
在JS中所有的数值都是Number类型,包括整数和浮点数(小数)
JS中可以表示的数字的最大值:Number.MAX_VALUE,科学计数法表示为1.7976931348623157e+308;最小值:Number.MIN_VALUE,科学计数法表示为5e-324
如果使用Number表示的数字超过了最大值,则会返回一个Infinity,表示正无穷;-Infinity,表示负无穷
可以使用一个运算符typeOf来检查一个变量的类型
语法: typeOf 变量
检查字符串时,会返回string
检查数值时,会返回number
使用typeOf检查Infinity也会返回Number
NaN是个特殊的数字,表示Not A Number;使用typeOf检查NaN也会返回Number
在JS整数的运算基本可以保证精确,如果使用JS进行浮点数运算,可能得到一个不精确的结果,所以,千万不要使用JS进行对精确度要求比较高的运算
1.编写数字的更多方法
一般来说,在表示10亿时,我们会这样写:
let billion = 1000000000;
但是通常为了简写和方便,会将10亿写成 “1bn” ,22亿写成 “2.2bn”。
在 JavaScript 中,我们通过在数字后附加字母 “e”,并指定零的数量来缩短数字:
let billion = 1e9; // 10 亿,字面意思:数字 1 后面跟 9 个 0alert( 2.2e9 ); // 22 亿(2,200,000,000)
如果写一些非常小的数字,例如,1 微秒(百万分之一秒):
let ms = 0.000001;
同样可以使用 “e” 来完成:
let ms = 1e-6; // 1 的左边有 6 个 0
0.000001 中的 0 的个数,是 6 个。所以使用1e-6来表示。e后面的负数表示除以 1 后面跟着给定数量的 0 的数字
2.十六进制、二进制、八进制数字
十六进制数字在 JavaScript 中被广泛用于表示颜色,编码字符以及其他许多东西。所以自然地,有一种较短的写方法:0x,然后是数字。二进制和八进制数字系统很少使用,但也支持使用 0b 和 0o 前缀:
alert( 0xff ); // 255
alert( 0xFF ); // 255(一样,大小写没影响)let a = 0b11111111; // 二进制形式的 255
let b = 0o377; // 八进制形式的 255alert( a == b ); // true,两边是相同的数字,都是 255
3.toString(base)方法
方法 number.toString(base) 返回在给定 base 进制数字系统中 num 的字符串表示形式。
举个例子:
let num = 255;alert( num.toString(16) ); // ff
alert( num.toString(2) ); // 11111111
base 的范围可以从 2 到 36。默认情况下是 10。
常见的用例如下:
base=16 用于十六进制颜色,字符编码等,数字可以是
0..9
或A..F
。base=2 主要用于调试按位操作,数字可以是
0
或1
。base=36 是最大进制,数字可以是 0...9 或 A...Z 。所有拉丁字母都被用于了表示数字。对于 36进制来说,一个有趣且有用的例子是,当我们需要将一个较长的数字标识符转换成较短的时候,例如做一个短的 URL。可以简单地使用基数为 36 的数字系统表示:
alert( 123456..toString(36) ); // 2n9c
使用两个点来调用一个方法
如果我们想直接在一个数字上调用一个方法,比如上面例子中的
toString
,那么我们需要在它后面放置两个点..
。 123456..toString(36)如果我们放置一个点:
123456.toString(36)
,那么就会出现一个 error,因为 JavaScript 语法隐含了第一个点之后的部分为小数部分。如果我们再放一个点,那么 JavaScript 就知道小数部分为空,现在使用该方法。也可以写成
(123456).toString(36)
。
4.舍入
舍入(rounding)是使用数字时最常用的操作之一。这里有几个对数字进行舍入的内建函数:
- Math.floor 向下舍入
- Math.ceil 向上舍入
- Math.round 向最近的整数舍入
- Math.trunc 移除小数点后的所有内容而没有舍入
如果要将数字舍入到小数点后n位,有两种方法可以实现
(1).乘除法
例如,要将数字舍入到小数点后两位,我们可以将数字乘以 100
(或更大的 10 的整数次幂),调用舍入函数,然后再将其除回。
let num = 1.23456;alert( Math.floor(num * 100) / 100 ); // 1.23456 -> 123.456 -> 123 -> 1.23
(2).函数 toFixed(n)
函数 toFixed(n) 将数字舍入到小数点后 n
位,并以字符串形式返回结果。
let num = 12.34;
alert( num.toFixed(1) ); // "12.3"
toFixed(n) 的结果是一个字符串。如果小数部分比所需要的短,则在结尾添加零:
let num = 12.34;
alert( num.toFixed(5) ); // "12.34000",在结尾添加了 0,以达到小数点后五位
可以使用一元加号或 Number() 调用,将其转换为数字:+num.toFixed(5)。
5. isNaN 和 isFinite
Infinity
(和 -Infinity
)是一个特殊的数值,比任何数值都大(小)。
NaN
代表一个 error,它是独一无二的,它不等于任何东西,包括它自身。
alert( NaN === NaN ); // false
(1).isNaN(value)
isNaN(value) 将其参数转换为数字,然后测试它是否为 NaN:
alert( isNaN(NaN) ); // true
alert( isNaN("str") ); // true
(2).isFinite(value)
isFinite(value)将其参数转换为数字,如果是常规数字,则返回 true
,而不是 NaN/Infinity/-Infinity
:
alert( isFinite("15") ); // true
alert( isFinite("str") ); // false,因为是一个特殊的值:NaN
alert( isFinite(Infinity) ); // false,因为是一个特殊的值:Infinity
6. parseInt 和 parseFloat
使用加号 +
或 Number()
的数字转换是严格的。如果一个值不完全是一个数字,就会失败:
alert( +"100px" ); // NaN
parseInt 和 parseFloat 从字符串中从左往右“读取”数字,直到无法读取为止。如果发生 error,则返回收集到的数字。函数 parseInt 返回一个整数,而 parseFloat 返回一个浮点数:
alert( parseInt('100px') ); // 100
alert( parseFloat('12.5em') ); // 12.5alert( parseInt('12.3') ); // 12,只有整数部分被返回了
alert( parseFloat('12.3.4') ); // 12.3,在第二个点处停止了读取alert( parseInt('a123') ); // NaN,第一个符号停止了读取
7.其他数学函数
(1).Math.random
返回一个从 0 到 1 的随机数(不包括 1)
alert( Math.random() ); // 0.1234567894322
alert( Math.random() ); // 0.5435252343232
alert( Math.random() ); // ... (任何随机数)
(2).Math.max(a,b,c...) 和 Math.min(a,b,c...)
从任意数量的参数中返回最大/最小值
alert( Math.max(3, 5, -10, 0, 1) ); // 5
alert( Math.min(1, 2) ); // 1
(3).Math.pow(n,power)
返回n的power次幂
alert( Math.pow(2, 10) ); // 2 的 10 次幂 = 1024
JavaScript — 数据类型之 Number数字类型相关推荐
- oracle输入数字类型吗,PL/SQL Number数字类型函数
PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00 作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...
- Java中number数字类型的转换_Java下数字类型的转换 (转)
Java下数字类型的转换 (转)[@more@] 作者:家居猫 各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数 ...
- javascript验证是否是数字类型
正则校验: var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字,//若判断正整数,则后边是:/^[1-9]+[0-9]*]*$/ if(re.test(value) = ...
- python的符号函数得到的数字类型_python-1:Number数字类型 之二 相关函数 int.from_bytes,int.to_bytes()...
函数格式:int.from_bytes(bytes, byteorder, *, signed=False) 简单demo: s1 = b'\xf1\xff' print(int.from_bytes ...
- python中number函数_python-1:Number数字类型 之三 相关函数 Fraction
fractions模块 fractions模块提供了分数类型的支持. Fraction类 该类是fractions模块的核心,它继承了numbers.Rational类并且实现了该类所有的方法. 构造 ...
- Python数据类型(一)数字类型
Python3有六个标准数据类型: .不可变数据类型:Number(数字).String(字符串).Tuple(元组) .可变数据类型: List(列表).Dictionary(字典).Set(集合) ...
- 【python】Python的基本数据类型之数字类型与字符串类型
1. Python的基本数据类型 1.1 数字类型 整型(关键字int) 由0~9组成的所有数字,例如:年龄.存款.尺寸.手机号等. 浮点型(关键字float) 包含有小数点,例如:价格,重量 布尔型 ...
- python3中数字类型有哪些_Python3数据类型—列表 | 吴老二
变量 在没有说数据类型之前,先简单说一下变量.后面会对变量有补充,变量是什么,简单的说就是内存地址的名字.举个例子,wulaoer="吴老二",这就是一个变量,中文"吴老 ...
- javaScript数据类型(包括基本数据类型和非基本数据类型)
一.五种基本数据类型 1.number 数字类型 - 包括浮点数和整数,例如:1,100,3.14 2.string 字符串类型 - 包括任意数字字符组成的序列,例如:"1", & ...
最新文章
- Oracle的口令文件(passwordfile)的讲解(摘录)
- 查看微码的两种方式hmcaix
- 第六十一节,html超链接和路径
- MQTT+ActiveMQ实现消息推送
- logback的简单使用
- 流式计算中为什么需要时间戳和WaterMark
- android 获取wifi的加密类型,wifi加密类型
- C语言为四维数组申请动态内存空间的方法(二)
- 二维数组的最大联通子数组和
- 图片简单上色,花开花落云卷云舒。
- JavaScript网页简单特效
- python调用手机蓝牙_python bluetooth蓝牙信息获取蓝牙设备类型的方法
- C#+ AE实现地图注记功能
- 【人工智能项目】深度学习实现图像多标签分类
- Mybiosource丨Mybiosource玻连蛋白 (VTN),ELISA 试剂盒原理
- Babylongjs-纹理
- maxima得到简化行阶梯矩阵(RREF)
- 代理服务器没有响应解决方案
- 微信H5页面分享案例模版
- 红帽linux 下qt 5.13.1 编译 mysql80驱动(内含升级gcc版本)
热门文章
- 自制Linux精简系统
- elasticsearch Java Client用户指南
- NX二次开发 截图、向excel表格中插入图片 UF_DISP_create_framed_image
- JAVA实现遗传算法
- 一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)
- Coding and Paper Letter(八十四)
- 计算机集成制造系统在线出版,计算机集成制造系统
- 等额本息 vs 等额本金
- 函数:判断表达式括弧是否匹配
- C#/.Net 不要再使用Aspose和iTextSharp啦!QuestPDF操作生成PDF更快更高效!