Math constitue un support de fonctions et de constantes mathématiques.

Compatibilité
Cet objet est compatible avec Internet Explorer.Cet objet est compatible avec Netscape.
Disponibilité

Javascript 1.0

Synopsis
Math.constant
Math.function()
Propriétés
Propriété Description
E représente la constante d'Euler E (env 2.178).
LN10 représente le logarithme naturel base 10, loge10 (env 2.302).
LN2 représente le logarithme naturel base 2, loge2 (env 0.693).
LOG10E représente le logarithme naturel base e, log10e (env 0.434).
LOG2E représente le logarithme naturel base 10, log2e (env 1.442).
PI représente le ratio de la circonférence d'un cercle et de son diamètre divisé par deux, Pi (3.14159).
SQRT1_2 représente l'inverse de la racine carrée (0.707).
SQRT2 représente la racine carrée de 2 (1.414).
Méthodes
Méthode Description
abs(x) retourne la valeur absolue d'un nombre.
acos(x) retourne l'arc cosinus en radians d'un nombre.
asin(x) retourne l'arc sinus en radians d'un nombre.
atan(x, y) retourne l'arc tangente en radians d'un nombre.
atan2(x, y) retourne l'angle entre l'axe des x et un point.
ceil(x) retourne l'arrondi inférieur d'un nombre.
cos(x) retourne le cosinus d'un nombre.
exp(x) retourne ex ou e est la constante d'Euler.
floor(x) retourne l'arrondi vers le bas d'un nombre.
log(x) retourne le logarithme (base E) d'un nombre.
max(a, b) retourne la plus grande des valeurs.
min(a, b) retourne la plus petite des valeurs.
pow(x, y) calcule xy.
random() retourne un nombre pseudo-aléatoire.
round(x) retourne l'arrondi de la valeur d'un nombre à l'entier le plus prôche.
sin(x) retourne le sinus d'un nombre.
sqrt(x) retourne la racine carrée d'un nombre.
tan(x) retourne la tangente d'un nombre.
Exemple [voir]
<html>
  <head>
    <script language="javascript">
      var NDIGITS = 16;
      var STACKSIZE = 12;
      var value = 0;
      var level = 0;
      var entered = true;
      var decimal = 0;
      var fixed = 0;
      var exponent = false;

      function stackItem()
      {
        this.value = 0;
        this.op = "";
      }

      function array(length)
      {
        this[0] = 0;
        for (i=0; i<length; ++i)
        {
          this[i] = 0;
          this[i] = new stackItem();
        }
        this.length = length;
      }

      stack = new array(STACKSIZE);

      function push(value,op,prec)
      {
        if (level == STACKSIZE)
          return false;
        for (i = level; i > 0; --i)
        {
          stack[i].value = stack[i-1].value;
          stack[i].op = stack[i-1].op;
          stack[i].prec = stack[i-1].prec;
        }
        stack[0].value = value;
        stack[0].op = op;
        stack[0].prec = prec;
        ++level;
        return true;
      }

      function pop()
      {
        if (level==0)
          return false;
        for (i = 0; i < level; ++i)
        {
          stack[i].value = stack[i+1].value;
          stack[i].op = stack[i+1].op;
          stack[i].prec = stack[i+1].prec;
        }
        --level;
        return true;
      }

      function format(value)
      {
        var valStr = "" + value;
        if (valStr.indexOf("N") >= 0 ||
              (value == 2*value && value == 1 + value))
          return "Error ";
        var i = valStr.indexOf("e")
        if (i >= 0)
        {
          var expStr = valStr.substring(i + 1,valStr.length);
          if (i > NDIGITS - 5) i = NDIGITS - 5;
            valStr = valStr.substring(0,i);
          if (valStr.indexOf(".") < 0)
            valStr += ".";
          valStr += " " + expStr;
        }
        else
        {
          var valNeg = false;
          if (value < 0)
          {
            value = -value;
            valNeg = true;
          }
          var expval = Math.log(value)*Math.LOG10E;
          if (value == 0)
          {
            expval = 0;
          }
          else if (expval > NDIGITS-5)
          {
            expval = Math.floor(expval);
            value /= Math.pow(10, expval);
          }
          else if (-expval > NDIGITS-5)
          {
            expval = Math.ceil(expval);
            value /= Math.pow(10, expval);
          }
          else
          {
            expval = 0;
          }
          var valInt = Math.floor(value);
          var valFrac = value - valInt;
          var prec = NDIGITS - (""+valInt).length - 1;
          if (prec < 0)
            return "Error"
          if (!entered && fixed > 0)
            prec = fixed;
          var mult = " 1000000000000000000".substring(1,prec + 2);
          var frac = Math.floor(valFrac * mult + 0.5);
          valInt = Math.floor(Math.floor(value * mult + .5) / mult);
          if (valNeg)
            valStr = "-" + valInt;
          else
            valStr = "" + valInt;
            var fracStr = "00000000000000" + frac;
            fracStr = fracStr.substring(fracStr.length-prec, fracStr.length);
            i = fracStr.length - 1;
           if (entered || fixed == 0)
           {
             while (i >= 0 && fracStr.charAt(i)=="0")
             --i;
             fracStr = fracStr.substring(0, i + 1);
           }
           if (i >= 0)
             valStr += "." + fracStr;
           if (expval != 0)
           {
             var expStr = "" + expval;
             valStr += " " + expStr;
          }
        }
        return valStr;
      }

      function refresh()
      {
        var display = format(value);
        if (exponent)
        {
          if (expval < 0)
            display += " " + expval;
          else
            display += " +" + expval;
        }
        if (display.indexOf(".")<0 && display != "Error ")
        {
         if (entered || decimal>0)
           display += '.';
          else
            display += ' ';
        }
        display = "             " + display;
        display = display.substring(display.length - NDIGITS - 1,display.length);
        document.calculator.result.value = display;
      }

      function clearDisp()
      {
        exponent = false;
        value = 0;
        enter();
        refresh();
      }

      function clearAll()
      {
        level = 0;
        clearDisp();
      }

      function evalx()
      {
        if (level == 0)
          return false;
        op = stack[0].op;
        sval = stack[0].value;
        if (op == "+")
          value = sval + value;
        else if (op == '-')
          value = sval - value;
        else if (op == '*')
          value = sval * value;
        else if (op == '/')
          value = sval / value;
        else if (op == 'pow')
          value = Math.pow(sval,value);
        pop();
        if (op=='(')
          return false;
        return true;
      }

      function openp()
      {
        enter();
        if (!push(0,'(',0))
          value = "NAN";
        refresh();
      }

      function closep()
      {
        enter();
        while (evalx()) ;
          refresh();
      }

      function operator(op)
      {
        enter();
        if (op == '+' || op == '-')
          prec = 1;
        else if (op == '*' || op == '/')
          prec = 2;
        else if (op == "pow")
          prec = 3;
        if (level > 0 && prec < = stack[0].prec)
           evalx();
        if (!push(value,op,prec))
          value = "NAN";
        refresh();
      }

      function enter()
      {
        if (exponent)
          value = value * Math.exp(expval * Math.LN10);
        entered = true;
        exponent = false;
        decimal = 0;
        fixed = 0;
      }

      function equals()
      {
        enter();
        while (level > 0)
          evalx();
        refresh();
      }

      function digit(n)
      {
        if (entered)
        {
          value = 0;
          digits = 0;
          entered = false;
        }
        if (n == 0 && digits == 0)
        {
          refresh();
          return;
        }
        if (exponent)
        {
          if (expval < 0)
            n = -n;
          if (digits < 3)
          {
            expval = expval * 10 + n;
            ++digits;
            refresh();
          }
          return;
        }
        if (value < 0)
          n = -n;
        if (digits < NDIGITS - 1)
        {
          ++digits;
          if (decimal > 0)
          {
            decimal = decimal * 10;
            value = value + (n / decimal);
            ++fixed;
          }
          else
            value = value * 10 + n;
        }
        refresh();
      }

      function bksp()
      {
        if (entered)
        {
          refresh();
          return;
        }
        if (digits == 0)
        {
          refresh();
          return;
        }
        if (exponent)
        {
          if (expval < 0)
            expval = -Math.floor(-expval / 10);
          else
            expval = Math.floor(expval / 10);
          --digits;
          refresh();
          return;
        }
        if (decimal > 1)
        {
          if (value < 0)
            value = -Math.floor(-value * decimal / 10);
          else
            value = Math.floor(value * decimal / 10);
          decimal = decimal / 10;
          value = value/decimal;
          --fixed;
          if (decimal == 1)
            decimal = 0;
        }
        else
        {
          if (value < 0)
            value = -Math.floor(-value / 10);
          else
            value = Math.floor(value / 10);
          decimal = 0;
        }
        --digits;
        refresh();
      }

      function sign()
      {
        if (exponent)
          expval = -expval;
        else
          value = -value;
        refresh();
      }

      function period()
      {
        if (entered)
        {
          value = 0;
          digits = 1;
        }
        entered = false;
        if (decimal == 0)
          decimal = 1;
        refresh();
      }

      function exp()
      {
        if (entered || exponent)
          return;
        exponent = true;
        expval = 0;
        digits = 0;
        decimal = 0;
        refresh();
      }

      function func(f)
      {
        enter();
        if (f=="1 / x")
        {
          value = 1 / value;
        }
        else if (f == 'n!')
        {
          if (value < 0 || value > 200 || value != Math.round(value))
            value = "NAN";
          else
          {
            var n = 1;
            var i;
            for (i = 1; i <= value; ++i)
              n *= i;
            value = n;
          }
        }
        else
        {
          if (f == "sin")
            value = Math.sin(value / 180 * Math.PI);
          else if (f == "cos")
            value = Math.cos(value / 180 * Math.PI);
          else if (f == "tan")
            value = Math.tan(value / 180 * Math.PI);
          else if (f == "log")
            value = Math.log(value) / Math.LN10;
          else if (f == "log2")
            value = Math.log(value) / Math.LN2;
          else if (f == "ln")
            value = Math.log(value);
          else if (f == "sqrt")
            value = Math.sqrt(value);
          else if (f == "pi")
            value = Math.PI;
          else if (f == "asin")
            value = Math.asin(value)*180 / Math.PI;
          else if (f=="acos")
            value = Math.acos(value)*180 / Math.PI;
          else if (f == "atan")
            value = Math.atan(value)*180/Math.PI;
          else if (f == "alog")
            value = Math.exp(value * Math.LN10);
          else if (f == "alog2")
            value = Math.exp(value * Math.LN2);
          else if (f == "exp")
            value = Math.exp(value);
          else if (f == "sqr")
            value = value*value;
          else if (f  == "e")
            value = Math.E;
        }
        refresh();
      }
    </script>
  </head>
  <body onload="refresh()">
    ...
  </body>
</html>
En savoir plus :
Découvrez cet objet sur le site de NetscapeDécouvrez cet objet sur le site de Microsoft