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 个 0

alert( 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; // 八进制形式的 255

alert( 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.5

alert( 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


版权声明:本文为m0_59897687原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。