javascript使用算術運算符實現基本的算術運算,若是要實現更加複雜的算術運算,須要經過Math對象定義的常量和函數來實現。和其餘對象不一樣,Math只是一個靜態對象,並無Math()構造函數。實際上,Math只是一個由javascript設置的對象命名空間,用於存儲數學常量和函數。本文將詳細介紹Math對象javascript
new Math();//Uncaught TypeError: Math is not a constructor
Math對象一共有8個常量,主要包括對數、派值和平方根三類html
Math.E 天然對數的底數,即常量e的值(約等於2.71828) Math.LN2 2的天然對數(約等於0.693) Math.LN10 10的天然對數(約等於2.303) Math.LOG2E 以2爲底e的對數(約等於1.443) Math.LOG10E 以10爲底e的對數(約等於0.434)
console.log(Math.E);//2.718281828459045 console.log(Math.LN2);//0.6931471805599453 console.log(Math.LN10);//2.302585092994046 console.log(Math.LOG2E);//1.4426950408889634 console.log(Math.LOG10E);//0.4342944819032518
Math.PI 派的值(約等於3.14) console.log(Math.PI);//3.141592653589793
Math.SQRT2 2的平方根(約等於1.414) Math.SQRT1_2 1/2的平方根,即2的平方根的倒數(約等於0.707)
console.log(Math.SQRT2);//1.4142135623730951 console.log(Math.SQRT1_2);//0.7071067811865476
Math對象一共有18個靜態函數,主要包括最值、舍入、隨機數、絕對值、三角函數及乘方開方6類java
[注意]這些函數都涉及到Number()隱式類型轉換。若超出範圍,將返回NaN數組
Math對象的min()和max()方法用於肯定一組數值中的最小和最大值,這兩個方法均可以接收任意個數值參數app
Math.max()dom
返回參數中最大值。若是沒有參數則返回-Infinity。若是任意一個參數是NaN或不可轉換爲數字,則返回NaN函數
Math.min()ui
返回參數中最小值。若是沒有參數則返回Infinity。若是任意一個參數是NaN或不可轉換爲數字,則返回NaNspa
console.log(Math.min(1,2,3));//1 console.log(Math.max(1,2,3));//3 console.log(Math.min());//Infinity console.log(Math.max());//-Infinity console.log(Math.min(1,2,'3px'));//NaN console.log(Math.max(1,2,'3px'));//NaN
【tips】找到數組中的最大或最小值設計
var values = [1,2,3,4,5,6,7,8]; var maxValue = Math.max.apply(Math,values);//8 var minValue = Math.min.apply(Math,values);//1
當咱們在一個表單中須要一個合法的月份值時,能夠使用下列代碼
Math.min(Math.max(1,input),12);
Math對象一共有三種小數舍入爲整數的方法,它們是:Math.ceil()、Math.floor()和Math.round()
Math.ceil()
執行向上取整運算,也就是說,它返回大於等於函數參數的最接近的整數
[注意]Math.ceil()不會將負數變成絕對值更大的負數,而是將它們向0的方向取整
Math.floor()
執行向下取整運算,也就是說,它返回小於等於函數參數的最接近的整數
[注意]Math.floor()對負數也向下取整,即數字將更小
Math.round()
執行四捨五入取整運算
[注意]Math.round(x) + Math.round(-x) == 0;//true,當x爲數字時
console.log(Math.ceil(12.6));//13 console.log(Math.floor(12.6));//12 console.log(Math.round(12.6));//13 console.log(Math.ceil(-12.6));//-12 console.log(Math.floor(-12.6));//-13 console.log(Math.round(-12.6));//-13
Math.random()
該方法返回大於等於0小於1的一個隨機數
console.log(Math.random());//0.590752829178167
套用下面的公式能夠利用Math.random()從某個整數範圍內隨機選擇一個值
值 = Math.floor(Math.random() * 可能值的總數 + 第一個可能的值)
//返回一個1-10之間的整數值 var num = Math.floor(Math.random() * 10 + 1)
多數狀況下,已知條件是首尾值
var num = Math.floor(Math.random()*(upperValue - lowerValue + 1) + lowerValue);
//從數組中隨機取出一項 var colors = [1,2,3,4,5,6]; var color = colors[Math.floor(Math.random()*colors.length)];
01值
若是想取得隨機的01值,可以使用下面代碼
Math.round(Math.random())
長度一致的隨機數
var random = Math.random(); var random = random + '0000000000'; var random = random.slice(0,10); console.log(random);
Math.abs()
該方法返回任意數值的絕對值
console.log(Math.abs(-1));//1 console.log(Math.abs('1px'));//NaN console.log(Math.abs(1,2,3));//1
Math對象共有7個涉及到三角函數的函數,分別是正弦、餘弦、正切、反正弦、反餘弦、反正切及y/x的反正切值
Math.sin(x)
返回x的正弦值,返回值介於-1到1之間
Math.cos(x)
返回x的餘弦值,返回值介於-1到1之間
Math.tan(x)
返回x的正切值
[注意]x是一個以弧度制度量的角度,若是想將角度制轉爲弧度制,能夠將角度制的值乘以0.017(2派/360)
Math.asin(x)
返回x的反正弦值,返回值介於-派/2到派/2弧度之間(x必須是-1到1之間的數)
Math.acos(x)
返回x的反餘弦值,返回值介於0到派弧度之間(x必須是-1到1之間的數)
Math.atan(x)
返回x的反正切值,返回值介於-派/2到派/2弧度之間
Math.atan2(y,x)
返回y/x的反正切值,返回值介於-派到派能夠將y看作一個點的y座標,x看作點的x座標
[注意]y座標在x座標前面
console.log(Math.sin(30*Math.PI/180));//0.49999999999999994 console.log(Math.cos(60*Math.PI/180));//0.5000000000000001 console.log(Math.tan(45*Math.PI/180));//0.9999999999999999 console.log(Math.asin(1)*180/Math.PI);//90 console.log(Math.acos(1)*180/Math.PI);//0 console.log(Math.atan(1)*180/Math.PI);//45 console.log(Math.atan2(1,1)*180/Math.PI);//45
Math對象涉及到乘方開方的函數共有4個
Math.exp(num)
返回Math.E的num次冪,即enum
console.log(Math.exp(0));//1 console.log(Math.exp(1));//2.718281828459045
Math.log(num)
返回num的天然對數,logenum(num必須是大於等於0的數)
log10x = 1og10e * logex log2x = log2e * logex
function log10(x){ return Math.LOG10E * Math.log(x); } function log2(x){ return Math.LOG2E * Math.log(X); }
console.log(Math.log(1));//0 console.log(Math.log(Math.E));//1
Math.sqrt(num)
返回num的平方根(x必須是大於等於0的數)
console.log(Math.sqrt(100));//10 console.log(Math.sqrt(1));//1
Math.pow(num,power)
返回num的power次冪
console.log(Math.pow(10,2));//100 console.log(Math.pow(100,1/2));//10
【1】 ES5/Math對象 https://www.w3.org/html/ig/zh/wiki/ES5/builtins#Math_.E5.AF.B9.E8.B1.A1
【2】 阮一峯Javascript標準參考教程——標準庫——Math對象 http://javascript.ruanyifeng.com/stdlib/math.html
【3】 W3School-Javascript高級教程——Math對象 http://www.w3school.com.cn/jsref/jsref_obj_math.asp【4】《javascript權威指南(第6版)》第三部分 javascript核心參考【5】《javascript高級程序設計(第3版)》第5章 引用類型