Skip to content
电脑工程师入门

电脑工程师入门

create tomorrow, create happiness

  • 实用软件教程
    • Excel
    • WordPress
    • Powerpoint
    • PowerApps
    • PowerAutomateDesk
  • 计算机语言入门
    • PHP
    • Bootstrap
    • JavaScript
    • Python
    • HTML
    • WordPress
  • 咨询
  • Home
  • JavaScript
  • 第二十二章 数字对象
  • HOME
  • JavaScript
  • 第二十二章 数字对象

第二十二章 数字对象

JavaScript

Math 对象是提供执行数学运算的方法和属性的对象。不要创建 Math 对象的新实例,而是使用 Math 对象提供的静态方法。这里我们将解释如何使用 Math 对象。

目录

22-1 Math 对象的静态属性
22-2 获取绝对值 (Math.abs)
22-3 四舍五入/向上舍入/向下舍入(Math.round, Math.ceil, Math.floor)
22-4 删除小数位并得到一个整数(Math.trunc)
22-5 获取多个值中的最大值和最小值(Math.max,Math.min).
22-6 生成一个随机数 (Math.random)
22-7 计算平方根/立方根(Math.sqrt、Math.cbrt)
22-8 计算能力(Math.pow、Math.exp)

22-1 Math 对象的静态属性

讲解 Math 对象提供的静态属性列表和每个属性的说明。

Math 对象的静态属性列表

Math 对象提供的静态属性包括:

静态属性意义值
Math.E自然对数的底2.718281828459045
Math.LN22的自然对数0.6931471805599453
Math.LN1010的自然对数2.302585092994046
Math.LOG2Ee 的以 2 为底的对数1.4426950408889634
Math.LOG10Ee 的以 10 为底的对数0.4342944819032518
Math.PIπ3.141592653589793
Math.SQRT1_21/2 的平方根0.7071067811865476
Math.SQRT22 的平方根1.4142135623730951

关于对数

对数在这里就不多说了,简单来说,当x = a p时,p 称为x 以a 为底的对数。

所以Math对象的静态属性中定义的常量可以表示为:

Math.LN10 log e 10 
Math.LN2 log e 2 
Math.LOG10E log 10 e 
Math.LOG2E log 2 e

关于圆周率

Pi,π,在计算圆的周长和面积时使用。

let r = 10; // 半径
let c = 2 * Math.PI * r; // 周长 2πr 
let a = Math.PI * r * r; // 圆面积 πr 2

关于平方根

平方根在这里就不多说了,简单来说,当a = b 2成立时,b称为a的平方根。2 的平方根是平方等于 2 的数。

Math 对象提供的静态属性列表以及每个属性的说明。

22-2 获取绝对值 (Math.abs)

Math 对象的静态方法 Math.abs 获取目标值的绝对值。本节介绍如何使用 Math 对象的 Math.abs 方法。

获取绝对值(abs)

Math 对象的 Math.abs 方法获取目标值的绝对值。格式如下。

Math.abs(数字)

返回参数中指定数字的绝对值。如果参数不是数字,则将其转换为数字并获取绝对值。数字 x 的绝对值通常表示为 |x|。绝对值计算原样返回正值,负值乘以-1,正负号颠倒。

看看下面的示例。

Math.abs(12);
>> 12

Math.abs(0);
>> 0

Math.abs(-12);
>> 12

如果指定一个非数值作为参数,则转换为数值后得到绝对值。

看看下面的示例。

Math.abs('-64');
>> 64

Math.abs([-512]);
>> 512

Math.abs(null);
>> 12

Math.abs(undefined);
>> NaN

Math.abs(NaN);
>> NaN

我们已经了解了如何使用 Math 对象的 Math.abs 方法。

22-3 四舍五入/向上舍入/向下舍入(Math.round, Math.ceil, Math.floor)

Math 对象的静态方法 Math.round 将目标值四舍五入为最接近的整数。Math.ceil 将目标值四舍五入为最接近的整数。Math.floor 将目标值截断到最接近的小数位。本节介绍如何使用 Math 对象的 Math.round、Math.ceil 和 Math.floor 方法。

小数点四舍五入(四舍五入)

Math 对象的 Math.round 方法返回四舍五入到最接近整数的目标值。格式如下。

Math.round(数値)

返回通过舍入参数中指定的数字的小数点获得的值。如果参数不是数字,则将其转换为数字,然后将值四舍五入为最接近的整数。

如果目标值为正且小数部分大于 0.5,则通过 Math.round 方法进行舍入会向上舍入一位较大的整数,如果小数部分小于 0.5,则会向下舍入为一位较低的整数。如果小数部分是 0.5,它将向正无穷大方向四舍五入。

另外,如果目标值为负且小数部分大于-0.5(例如-0.4),则向上取整到下一个更大的整数,如果小数部分小于-0.5(例如-0.6),它将被四舍五入。四舍五入为整数。如果小数部分为 -0.5,则向正无穷四舍五入。

看看下面的示例。如果目标值为正。

Math.round(3.4);
>> 3

Math.round(3.5);
>> 4

Math.round(3.6);
>> 4

3.4 向下舍入为 3,3.6 向上舍入为 4。3.5 向正无穷大四舍五入得到 4。

如果目标值为负:

Math.round(-3.6);
>> -4

Math.round(-3.5);
>> -3

Math.round(-3.4);
>> -3

-3.6 向上舍入为 -4,-3.4 向下舍入为 -3。-3.5 向正无穷大方向四舍五入为 -3。

如果小数点是0.5,比如3.5或者-3.5,就会往正无穷方向四舍五入,如下图所示。请特别注意,像 -3.5 这样的负值是 -3 而不是 -4。

如果您在参数中指定一个非数字的值,它将被转换为一个数字并且小数点后的值将被四舍五入。看看下面的示例。

Math.round('12.75');
>> 13

Math.round([-4.445]);
>> -4

Math.round(null);
>> 0

Math.round(undefined);
>> NaN

Math.round(NaN);
>> NaN

小数点后四舍五入 (ceil)

Math 对象的 Math.ceil 方法获取向上舍入的目标值。格式如下。

Math.ceil(数值)

返回通过将参数中指定的数字的小数点四舍五入而获得的值。如果参数不是数字,则将其转换为数字,然后四舍五入得到小数点后的值。

使用 Math.ceil 方法四舍五入是指向上舍入到大于或等于目标值的最小整数。3.2和3.8都变成4,-3.2和-3.8都变成-3。

看看下面的示例。如果目标值为正。

Math.ceil(3.2);
>> 4

Math.ceil(3.8);
>> 4

Math.ceil(3);
>> 3

3.2 和 3.8 都四舍五入到 4。整数值(例如 3)不会更改。

如果目标值为负:

Math.ceil(-3.2);
>> -3

Math.ceil(-3.8);
>> -3

Math.ceil(-3);
>> -3

-3.2 和 -3.8 都向上舍入为 3。-3 等整数值保持不变。

如果将非数值指定为参数,则将其转换为数值,并将小数点后的值四舍五入。看看下面的示例。

Math.ceil('12.75');
>> 13

Math.ceil([-4.445]);
>> -4

Math.ceil(null);
>> 0

Math.ceil(undefined);
>> NaN

Math.ceil(NaN);
>> NaN

向下舍入(floor)

Math 对象的 Math.floor 方法获取向下舍入到最接近的小数点的目标值。格式如下。

Math.floor(数值)

返回通过截断参数中指定的数字的小数点获得的值。如果参数不是数字,则将其转换为数字,取小数点后的值。

Math.floor 方法截断为小于或等于目标值的最大整数。3.2和3.8都变成3,-3.2和-3.8都变成-4。

看看下面的示例。如果目标值为正。

Math.floor(3.2);
>> 3

Math.floor(3.8);
>> 3

Math.floor(3);
>> 3

3.2 和 3.8 都向下舍入为 3。整数值(例如 3)不会更改。

如果目标值为负:

Math.floor(-3.2);
>> -4

Math.floor(-3.8);
>> -4

Math.floor(-3);
>> -3

-3.2 和 -3.8 都向上舍入为 3。-3 等整数值保持不变。

如果将非数值指定为参数,它将被转换为数值并且小数点后的值将被截断。看看下面的示例。

Math.floor('12.75');
>> 12

Math.floor([-4.445]);
>> -5

Math.floor(null);
>> 0

Math.floor(undefined);
>> NaN

Math.floor(NaN);
>> NaN

22-4 删除小数位并得到一个整数(Math.trunc)

Math 对象的静态方法 Math.trunc 删除目标值的小数部分并检索目标值的整数部分。这里我们解释如何使用 Math 对象的 Math.trunc 方法。

删除小数位 (trunc)

Math 对象的 Math.trunc 方法删除目标值的小数部分以获得整数部分。格式如下。

Math.trunc(数值)

从参数中指定的数字中删除小数位并仅返回整数部分。如果参数不是数字,则将其转换为数字,得到去掉小数点后的值。

看看下面的示例。

Math.trunc(4.72);
 >> 4

Math.trunc(-1​​52.4435);
>>-152

Math.trunc(0.66);
>> 0

返回删除所有小数位的值,无论小数位是多少。

如果将非数值指定为参数,它将被转换为数值并去除小数点后的值。

Math.trunc('32.14');
 >> 32

Math.trunc([-4.75]);
>>-4

Math.trunc(未定义);
>>NaNs

Math.trunc(NaN);
>>NaNs

22-5 获取多个值中的最大值和最小值(Math.max,Math.min)

Math.max,Math 对象的静态方法,返回指定为参数的多个值中的最大值。另外,Math.min 返回指定为参数的多个值中的最小值。这里,我们将说明如何使用 Math 对象的 Math.max 方法和 Math.min 方法。

获取最大值(max)

Math 对象的 Math.max 方法返回指定为参数的值中的最大值。格式如下。

Math.max([Number1[, Number2[, ...]]])

从参数中指定的多个值中返回最大值作为返回值。如果参数不是数字,则在执行比较之前将其转换为数字。如果没有给出参数,则返回 -Infinity;如果参数中的任何值为 NaN,则返回 NaN。

看看下面的示例。

Math.max(4, 10.2, 16, -2);
>> 16
Math.max(7);
>> 7
Math.max();
>> -Infinity

第一个示例指定了四个参数。它返回 16,这是参数中的最大值。第二个示例仅指定一个参数。在这种情况下,参数的值按原样返回。示例中没有再次指定参数。在这种情况下,返回 -Infinity。

这次当参数中有非数值时。

Math.max(7, '8.4', [3]);
>> 8.4
Math.max(4, NaN);
>> NaN
Math.max(8, 2, undefined);
>> NaN

如果将非数值指定为参数,则在比较之前将其转换为数值。第一个示例包含一个字符串或数组值,但是当转换为数字时它变成了数字,因此它返回转换为数字的最大值。第二个和第三个示例返回 NaN,因为参数包含 NaN 或转换为 NaN 的数字的值。

获取最小值(min)

Math 对象的 Math.min 方法返回指定为参数的值中的最小值。格式如下。

Math.min([Number1[, Number2[, ...]]])

从参数中指定的多个值中返回最小值作为返回值。如果参数不是数字,则在执行比较之前将其转换为数字。如果没有给出参数,则返回 Infinity,如果参数中的任何值为 NaN,则返回 NaN。

看看下面的示例。

Math.min(4, 10.2, 16, -2);
>> -2
Math.min(7);
>> 7
Math.min();
>> Infinity

第一个示例指定了四个参数。它返回 -2,这是参数中的最小值。第二个示例仅指定一个参数。在这种情况下,参数的值按原样返回。示例中没有再次指定参数。在这种情况下返回无穷大。

这次当参数中有非数值时。

Math.min(7, '8.4', [3]);
>> 3
Math.min(4, NaN);
>> NaN
Math.min(8, 2, undefined);
>> NaN

如果将非数值指定为参数,则在比较之前将其转换为数值。第一个示例包含一个字符串或数组值,但是当转换为数字时,它变成了数字,因此返回转换为数字的最小值。第二个和第三个示例返回 NaN,因为参数包含 NaN 或转换为 NaN 的数字的值。

22-6 生成一个随机数 (Math.random)

Math 对象的静态方法 Math.random 生成并返回一个随机数。本节介绍如何使用 Math 对象的 Math.random 方法。

生成随机数(random)

Math 对象的 Math.random 方法生成并返回一个随机数。格式如下。

Math.random()

创建并返回一个大于或等于 0 且小于 1 的随机浮点数。无法为随机数指定种子(类似于生成随机数的设置值)。

看看下面的示例。

for (let i = 0 ; i < 5 ; i++){
  console.log(Math.random());
}

>> 0.46734844249381324
>> 0.8023117892739917
>> 0.33077513353347476
>> 0.6943056771845824
>> 0.09784138022219802

产生了5个大于等于0小于1的随机值。每次运行时此值都会更改。

比如你想得到一个1到10(含10)之间的随机整数,写法如下。

for (let i = 0 ; i < 5 ; i++){
  let num = Math.floor(Math.random() * 10) + 1;
  console.log(num);
}

>> 10
>> 6
>> 8
>> 2
>> 6

更一般地说,如果你想得到一个介于 n 和 m 之间的随机整数,包括 n 和 m,写发如下:

function getRandam(n, m){
  for (let i = 0 ; i < 5 ; i++){
    let num = Math.floor(Math.random() * (m + 1 - n)) + n;
    console.log(num);
  }
};

getRandam(11, 20);

>> 19
>> 17
>> 20
>> 17
>> 11

22-7 计算平方根/立方根(Math.sqrt、Math.cbrt)

Math 对象的静态方法 Math.sqrt 计算指定值的平方根。Math.cbrt 还计算指定值的立方根。本节介绍如何使用 Math 对象的 Math.sqrt 和 Math.cbrt 方法。

计算平方根 (sqrt)

Math 对象的 Math.sqrt 方法计算指定值的平方根。格式如下。

Math.sqrt(数值)

计算指定数字的平方根并返回结果。如果参数不是数字,将其转换为数字,然后取平方根。如果目标数为负数,则返回 NaN。

平方根在这里就不多说了,简单来说,当a = b 2成立时,b称为a的平方根。例如,5 的平方根是平方等于 5 的数。

看看下面的示例。

Math.sqrt(9);
 >> 3
Math.sqrt(4);
>> 2
Math.sqrt(2);
>> 1.4142135623730951

计算并获取参数中指定值的平方根。

如果目标值不是数字,则将其转换为数字,然后取平方根。如果目标值为负或 NaN,则返回 NaN。

Math.sqrt('25');
 >> 5
Math.sqrt(-16);
>>NaNs
Math.sqrt(NaN);
>>NaNs
Math.sqrt(未定义);
>>NaNs

平方根的 Math 对象的静态属性

Math 对象有两个与平方根相关的静态属性。

Math.SQRT1_2 1/2 的平方根
Math.SQRT2 2 的平方根

这与使用 Math.sqrt 方法计算相同:

Math.sqrt(2);
 >> 1.4142135623730951
console.log(Math.SQRT2);
>> 1.4142135623730951
Math.sqrt(1/2);
>> 0.7071067811865476
console.log(Math.SQRT1_2);
>> 0.7071067811865476

计算立方根 (cbrt)

Math 对象的 Math.cbrt 方法计算给定值的立方根(立方根)。格式如下。

Math.cbrt(数值)

计算参数中指定数字的立方根并返回结果。如果参数不是数字,则在计算立方根之前将其转换为数字。如果目标数为负数,则返回 NaN。

关于立方根这里就不多说了,简单来说,当a = b 3成立时,b称为a的立方根。例如,5 的立方根就是立方等于 5 的数。

看看下面的示例。

Math.cbrt(8);
 >> 2

Math.cbrt(125);
>> 5

Math.cbrt(16);
>> 2.5198420997897464

计算并获取参数中指定值的立方根。

22-8 计算能力(Math.pow、Math.exp)

Math.pow 是 Math 对象的静态方法,它计算给定底数和指数的幂。Math.exp 还将基数作为纳皮尔数 e,并计算给定指数的幂。本节介绍如何使用 Math 对象的 Math.pow 和 Math.exp 方法。

计算功率 (pow)

Math 对象的 Math.pow 方法计算给定底数和指数的幂。格式如下。

Math.pow(基数,指数)

根据指定的底数和指数计算幂并返回结果。如果参数不是数字,将其转换为数字,然后取平方根。

一般情况下,底数为a,指数为n时,a的n次方记为a n,并乘以a n次,如下所示。

a =a x a x a... x a

如果指数为负,则可以表示为:

a-1 = 1/a
a-2 = 1/a2
a-n = /an

如果指数为 0,则无论底数如何,幂的结果都是 1。

a0 = 1

如果指数不是整数,则可以表示为:

a1/2 = √a
a1/3 = 3√a
a1/n = n√a

此时如果基数为负值,则结果可能是复数或虚数。在这种情况下返回 NaN。

立方的样本

看看下面的示例。

Math.pow(2, 3);
>> 8
Math.pow(3, 2);
>> 2
Math.pow(-4, 3);
>> -64

第一个例子是 2 3 = 2 x 2 x 2 = 8。第二个例子是 3 2 = 3 x 3 = 9。最后一个例子是 -4 3 = -4 x -4 x -4 = -64

如果指数为负

如果指数为负:

Math.pow(2, -1);
>> 0.5
Math.pow(2, -2);
>> 0.25
Math.pow(2, -3);
>> 0.125

第一个例子是 2 -1 = 1 / 2 = 0.5。第二个例子是 1 / 2 2 = 1 / 4 = 0.25。最后一个例子是 1 / 2 3 = 1 / 8 =0.125

如果指数为 0

如果指数为 0:

Math.pow(2, 0);
>> 1

Math.pow(5, 0);
>> 1

Math.pow(-3, 0);
>> 1

如果指数为 0,则结​​果为 1,与底值无关。

如果指数不是整数

下一种情况是指数不是整数。

Math.pow(16, 1 / 2);
>> 4

Math.pow(27, 1 / 3);
>> 3

第一个例子 16 1/2是 16 的平方根,也就是 4。第二个例子 27 1/3是 27 的立方根,也就是 3。

如果指数或基数是 NaN

如果基数是 NaN,则除 1 以外的任何指数都将是 NaN。如果指数为 0,则变为 1。所有 NaN 指数都是 NaN。

Math.pow(NaN, 0);
>> 1

Math.pow(NaN, 1);
>> NaN

Math.pow(NaN, 2);
>> NaN

Math.pow(2, NaN);
>> NaN

如果指数或基数不是数字

如果基数或指数不是数字,则将其转换为数字,然后计算幂。

Math.pow([2], 3);
>> 1

Math.pow(3, '4');
>> NaN

计算 e (exp) 的幂

Math 对象的 Math.exp 方法计算以 e 为底的指定指数的幂。格式如下。

Math.exp(指数)

根据参数中指定的指数计算e 指数并返回结果。如果参数不是数字,将其转换为数字,然后取平方根。

底数 e 是一个称为 Napier 数的值,它是自然对数的底数,作为 Math 对象的静态属性提供。

Math.E	自然对数的底

看看下面的示例。

Math.exp(1);
>> 2.718281828459045

Math.exp(2);
>> 7.38905609893065

Math.pow(Math.E, 1);
>> 2.718281828459045

第一个例子是 e 1,第二个例子是e 2 。最后一个示例是使用 Math.pow 方法的相同操作。

标签:JavaScript

文章导航

❮ Previous Post: 第二十一章 日期对象
Next Post: 第二十三章 Console 对象 ❯

关联内容

JavaScript
第二章将JavaScript写到HTML编码中
JavaScript
第一章 在浏览器中启用 JavaScript
JavaScript
第三章 JavaScript 基础知识
JavaScript
第四章 JavaScript的数值
JavaScript
第五章 長整数
JavaScript
第六章 字符串的基础

实用软件教程

  • Powerpoint
  • Excel
  • PowerAutomateDesk
  • Wordpress
  • Powerapps

编程语言入门

  • JavaScript
  • HTML
  • PHP
  • Python
  • Bootstrap

Copy right by flashyonder.com