阅读(1212) (0)

Math 对象

2017-06-16 15:46:55 更新

 Math 对象是拥有一些命名属性的单一对象,其中一些属性值是函数。

 Math 对象的 [[Prototype]] 内部属性值是标准内置 Object 原型对象 (15.2.4)。Math 对象的 [[Class]] 内部属性值是 "Math"。

 Math 对象没有 [[Construct]] 内部属性 ; Math 对象不能作为构造器被 new 运算符调用。

 Math 对象没有 [[Call]] 内部属性;Math 对象不能作为函数被调用。

 本规范中,短语“x 的数字值”的技术含义定义在 8.5。

Math 对象的值属性

E

 自然对数的底数 e 的数字值,约为 2.7182818284590452354。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

LN10

 10 的自然对数的数字值,约为 2.302585092994046。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

LN2

 2 的自然对数的数字值,约为 0.6931471805599453。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

LOG2E

 自然对数的底数 e 的以 2 为底数的对数的数字值;约为 1.4426950408889634。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

 Math.LOG2E 的值约为 Math.LN2 值的倒数。

LOG10E

 自然对数的底数 e 的以 10 为底数的对数的数字值;约为 0.4342944819032518。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

 Math.LOG10E 的值约为 Math.LN10 值的倒数。

PI

 圆的周长与直径之比π的数字值,约为 3.1415926535897932。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

SQRT1_2

 ½ 的平方根的数字值,约为 0.7071067811865476。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

 Math.SQRT1_2 的值约为 Math.SQRT2 值的倒数。

SQRT2

 2 的平方根的数字值,约为 1.4142135623730951。

 此属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } 。

Math 对象的函数属性

 对以下每个 Math 对象函数的每个参数(如果有多个,以左到右的顺序)应用 ToNumber 抽象操作,然后对结果数字值执行计算。

 下面对函数的描述中,符号 NaN, −0, +0, −∞, +∞ 指 8.5 描述的数字值。

 这里没有精确规定函数 acos, asin, atan, atan2, cos, exp, log, pow, sin, sqrt 的行为,除了需要特别说明对边界情况某些参数值的结果之外。对其他参数值,这些函数旨在计算计算常见数学函数的结果,但选择的近似算法中的某些范围是被允许的。The general intent is that an implementer should be able to use the same mathematical library for ECMAScript on a given hardware platform that is available to C programmers on that platform.

 Although the choice of algorithms is left to the implementation, it is recommended (but not specified by this standard) that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm, the freely distributable mathematical library from Sun Microsystems (http://www.netlib.org/fdlibm).

abs (x)

 返回 x 的绝对值。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 −0, 返回结果是 +0.
  • 若 x 是 −∞, 返回结果是 +∞.

acos (x)

 返回 x 的反余弦的依赖实现的近似值。结果以弧度形式表示,范围是 +0 到 +π。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 大于 1, 返回结果是 NaN.
  • 若 x 小于 −1, 返回结果是 NaN.
  • 若 x 正好是 1, 返回结果是 +0.

asin (x)

 返回 x 的反正弦的依赖实现的近似值。结果以弧度形式表示,范围是−π/2 到 +π/2。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 大于 1, 返回结果是 NaN.
  • 若 x 小于 –1, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.

atan (x)

 返回 x 的反正切的依赖实现的近似值。结果以弧度形式表示,范围是−π/2 到 +π/2。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞, 返回结果是 一个依赖于实现的近似值 +π/2.
  • 若 x 是 −∞, 返回结果是 一个依赖于实现的近似值 −π/2.

atan2 (y, x)

 返回 -- 参数 y 和 x 的商 y/x-- 的反正切的依赖实现的近似值,y 和 x 的符号用于确定返回值的象限。注:命名为 y 的参数为第一个,命名为 x 的参数为第二个,这是有意,是反正切函数俩参数的惯例。结果以弧度形式表示,范围是−π到 +π。

  • 若 x 和 y 至少一个是 NaN, 返回结果是 NaN.
  • 若 y>0 且 x 是 +0, 返回结果是 一个依赖于实现的近似值 +π/2.
  • 若 y>0 且 x 是 −0, 返回结果是 一个依赖于实现的近似值 +π/2.
  • 若 y 是 +0 且 x>0, 返回结果是 +0.
  • 若 y 是 +0 且 x 是 +0, 返回结果是 +0.
  • 若 y 是 +0 且 x 是 −0, 返回结果是 一个依赖于实现的近似值 +π.
  • 若 y 是 +0 且 x<0, 返回结果是 一个依赖于实现的近似值 +π.
  • 若 y 是 −0 且 x>0, 返回结果是 −0.
  • 若 y 是 −0 且 x 是 +0, 返回结果是 −0.
  • 若 y 是 −0 且 x 是 −0, 返回结果是 一个依赖于实现的近似值 −π.
  • 若 y 是 −0 且 x<0, 返回结果是 一个依赖于实现的近似值 −π.
  • 若 y<0 且 x 是 +0, 返回结果是 一个依赖于实现的近似值 −π/2.
  • 若 y<0 且 x 是 −0, 返回结果是 一个依赖于实现的近似值 −π/2.
  • 若 y>0 且 y 是 有限的 且 x 是 +∞, 返回结果是 +0.
  • 若 y>0 且 y 是 有限的 且 x 是 −∞, 返回结果是 一个依赖于实现的近似值 +π.
  • 若 y<0 且 y 是 有限的 且 x 是 +∞, 返回结果是 −0.
  • 若 y<0 且 y 是 有限的 且 x 是 −∞, 返回结果是 一个依赖于实现的近似值 −π.
  • 若 y 是 +∞ 且 x 是 有限的 , 返回结果是 返回结果是 一个依赖于实现的近似值 +π/2.
  • 若 y 是 −∞ 且 x 是 有限的 , 返回结果是 返回结果是 一个依赖于实现的近似值 −π/2.
  • 若 y 是 +∞ 且 x 是 +∞, 返回结果是 一个依赖于实现的近似值 +π/4.
  • 若 y 是 +∞ 且 x 是 −∞, 返回结果是 一个依赖于实现的近似值 +3π/4.
  • 若 y 是 −∞ 且 x 是 +∞, 返回结果是 一个依赖于实现的近似值 −π/4.
  • 若 y 是 −∞ 且 x 是 −∞, 返回结果是 一个依赖于实现的近似值 −3π/4.

ceil (x)

 返回不小于 x 的且为数学整数的最小 ( 接近−∞) 数字值。如果 x 已是整数,则返回 x。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞, 返回结果是 +∞.
  • 若 x 是 −∞, 返回结果是 −∞.
  • 若 x 小于 0 但大于 -1, 返回结果是 −0.

 Math.ceil(x) 的值与 -Math.floor(-x) 的值相同。

cos (x)

 返回 x 的余弦的依赖实现的近似值。参数被当做是弧度值。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 1.
  • 若 x 是 −0, 返回结果是 1.
  • 若 x 是 +∞, 返回结果是 NaN.
  • 若 x 是 −∞, 返回结果是 NaN.

exp (x)

 返回 x 的指数的依赖实现的近似值(e 为 x 次方,e 为自然对数的底)。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 1.
  • 若 x 是 −0, 返回结果是 1.
  • 若 x 是 +∞, 返回结果是 +∞.
  • 若 x 是 −∞, 返回结果是 +0.

floor (x)

 返回不大于 x 的且为数学整数的最大 ( 接近 +∞) 数字值。如果 x 已是整数,则返回 x。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞, 返回结果是 +∞.
  • 若 x 是 −∞, 返回结果是 −∞.
  • 若 x 大于 0 但小于 1, 返回结果是 +0.

 Math.floor(x) 的值与 -Math.ceil(-x) 的值相同。

log (x)

 返回 x 的自然对数的依赖于实现的近似值 .

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 小于 0, 返回结果是 NaN.
  • 若 x 是 +0 或 −0, 返回结果是 −∞.
  • 若 x 是 1, 返回结果是 +0.
  • 若 x 是 +∞, 返回结果是 +∞.

max ( [ value1 [ , value2 [ , … ] ] ] )

 给定零或多个参数,对每个参数调用 ToNumber 并返回调用结果里的最大值。

  • 若 没有给定参数 , 返回结果是 −∞.
  • 若 任何值是 NaN, 返回结果是 NaN.
  • 按照 11.8.5 指定方式进行值比较,确定最大值,与 11.8.5 指定方式的一个不同点是在这里 +0 被看作大于 -0.

 max 方法的 length 属性是 2。

min ( [ value1 [ , value2 [ , … ] ] ] )

 给定零或多个参数,对每个参数调用 ToNumber 并返回调用结果里的最小值。

  • 若 没有给定参数 , 返回结果是 +∞.
  • 若 任何值是 NaN, 返回结果是 NaN.
  • 按照 11.8.5 指定方式进行值比较,确定最小值,与 11.8.5 指定方式的一个不同点是在这里 +0 被看作大于 -0.

 min 方法的 length 属性是 2。

pow (x, y)

 返回 x 的 y 次方的依赖于实现的近似值 .

  • 若 y 是 NaN, 返回结果是 NaN.
  • 若 y 是 +0, 返回结果是 1, 即使 x 是 NaN.
  • 若 y 是 −0, 返回结果是 1, 即使 x 是 NaN.
  • 若 x 是 NaN 且 y 是 非零 , 返回结果是 NaN.
  • 若 abs(x)>1 且 y 是 +∞, 返回结果是 +∞.
  • 若 abs(x)>1 且 y 是 −∞, 返回结果是 +0.
  • 若 abs(x)==1 且 y 是 +∞, 返回结果是 NaN.
  • 若 abs(x)==1 且 y 是 −∞, 返回结果是 NaN.
  • 若 abs(x)<1 且 y 是 +∞, 返回结果是 +0.
  • 若 abs(x)<1 且 y 是 −∞, 返回结果是 +∞.
  • 若 x 是 +∞ 且 y>0, 返回结果是 +∞.
  • 若 x 是 +∞ 且 y<0, 返回结果是 +0.
  • 若 x 是 −∞ 且 y>0 且 y 是 一个奇数 , 返回结果是 −∞.
  • 若 x 是 −∞ 且 y>0 且 y 不是 一个奇数 , 返回结果是 +∞.
  • 若 x 是 −∞ 且 y<0 且 y 是 一个奇数 , 返回结果是 −0.
  • 若 x 是 −∞ 且 y<0 且 y 不是 一个奇数 , 返回结果是 +0.
  • 若 x 是 +0 且 y>0, 返回结果是 +0.
  • 若 x 是 +0 且 y<0, 返回结果是 +∞.
  • 若 x 是 −0 且 y>0 且 y 是 一个奇数 , 返回结果是 −0.
  • 若 x 是 −0 且 y>0 且 y 不是 一个奇数 , 返回结果是 +0.
  • 若 x 是 −0 且 y<0 且 y 是 一个奇数 , 返回结果是 −∞.
  • 若 x 是 −0 且 y<0 且 y 不是 一个奇数 , 返回结果是 +∞.
  • 若 x<0 且 x 是 有限的 且 y 是 有限的 and y 不是整数 , 返回结果是 NaN.

random ( )

 返回一个大于或等于 0 但小于 1 的符号为正的数字值,选择随机或在该范围内近似均匀分布的伪随机,用一个依赖与实现的算法或策略。此函数不需要参数。

round (x)

 返回最接近 x 且为数学整数的数字值。如果两个整数同等接近 x,则结果是接近 +∞的数字值 。如果 x 已是整数,则返回 x。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞, 返回结果是 +∞.
  • 若 x 是 −∞, 返回结果是 −∞.
  • 若 x 大于 0 但小于 0.5, 返回结果是 +0.
  • 若 x 小于 0 但大于或等于 -0.5, 返回结果是 −0.

 Math.round(3.5) 返回 4, 但 Math.round(–3.5) 返回 –3.

 当 x 为 −0 或 x 小于 0 当大于大于等于 -0.5 时,Math.round(x) 返回 −0, 但 Math.floor(x+0.5) 返回 +0,除了这种情况之外 Math.round(x) 的返回值与 Math.floor(x+0.5) 的返回值相同。

sin (x)

 返回 x 的正弦的依赖实现的近似值。参数被当做是弧度值。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞ 或 −∞, 返回结果是 NaN.

sqrt (x)

 返回 x 的平方根的依赖实现的近似值。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 小于 0, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞, 返回结果是 +∞.

tan (x)

 返回 x 的正切的依赖实现的近似值。参数被当做是弧度值。

  • 若 x 是 NaN, 返回结果是 NaN.
  • 若 x 是 +0, 返回结果是 +0.
  • 若 x 是 −0, 返回结果是 −0.
  • 若 x 是 +∞ 或 −∞, 返回结果是 NaN.