本文是 重溫基礎 系列文章的第六篇。
今日感覺:本身須要多總結,會有不一樣收穫(好比今晚我作的轉正總結)。前端
系列目錄:git
本章節複習的是JS中的數字類型,涉及的API比較多。 github
前置基礎:
在JavaScript中,數字爲雙精度浮點類型(即一個數字範圍只能在-(253-1)和(253-1)之間),整數類型也同樣。
另外數字類型也能夠是如下三種符號值:segmentfault
+Infinity
: 正無窮;-Infinity
: 負無窮;NaN
: 非數字(not a number);JS中內置了Number
對象的一些常量屬性:安全
屬性 | 描述 |
---|---|
Number.MAX_VALUE |
可表示的最大值 |
Number.MIN_VALUE |
可表示的最小值 |
Number.NaN |
特指「非數字」 |
Number.NEGATIVE_INFINITY |
特指「負無窮」;在溢出時返回 |
Number.POSITIVE_INFINITY |
特指「正無窮」;在溢出時返回 |
Number.EPSILON |
表示1和比最接近1且大於1的最小Number之間的差異 |
Number.MIN_SAFE_INTEGER |
JavaScript最小安全整數. |
Number.MAX_SAFE_INTEGER |
JavaScript最大安全整數. |
注意:以上全部屬性都是不可寫,不可枚舉,也不可配置。微信
Number.MAX_VALUE
Number.MAX_VALUE
是 Number
對象的一個靜態屬性,值接近於 1.79E+308
。大於 Number.MAX_VALUE
的值表明 "Infinity
"。dom
let a = 100; if(a < Number.MAX_VALUE){ console.log('success'); } // success
Number.MIN_VALUE
Number.MIN_VALUE
是 Number
對象的一個靜態屬性,值接近於 5e-324
,是 JavaScript 裏最接近 0 的正值,而不是最小的負值。ide
let a = 100; if(a > Number.MIN_VALUE){ console.log('success'); } // success
Number.NaN
Number.NaN
表示「非數字」,和 NaN
同樣。函數
Number.POSITIVE_INFINITY
Number.POSITIVE_INFINITY
屬性表示正無窮大,值同全局對象 Infinity
屬性的值相同。post
let a = Number.MAX_VALUE * 2; if(a == Number.POSITIVE_INFINITY){ console.log('success'); } // success
Number.NEGATIVE_INFINITY
Number.NEGATIVE_INFINITY
屬性表示負無窮大,值和全局對象的 Infinity
屬性的負值相同。
let a = - Number.MAX_VALUE * 2; if(a == Number.NEGATIVE_INFINITY){ console.log('success'); } // success
Number.EPSILON
Number.EPSILON
屬性表示 1 與Number可表示的大於 1 的最小的浮點數之間的差值,值接近於 2-52 。
let a = 0.1, b = 0.2, c = 0.3; let d = (Math.abs(a + b - c) < Number.EPSILON); d; // true
Number.MIN_SAFE_INTEGER
JS中最小的安全的integer型數字 (-(253 - 1))。
Number.MAX_SAFE_INTEGER
JS中最大的安全的integer型數字 (253 - 1)。
常見的方法有:
方法 | 描述 |
---|---|
Number.parseFloat() |
把字符串參數解析成浮點數,和全局方法 parseFloat() 做用一致. |
Number.parseInt() |
把字符串解析成特定基數對應的整型數字,和全局方法 parseInt() 做用一致. |
Number.isFinite() |
判斷傳遞的值是否爲有限數字。 |
Number.isInteger() |
判斷傳遞的值是否爲整數。 |
Number.isNaN() |
判斷傳遞的值是否爲 NaN . |
Number.isSafeInteger() |
判斷傳遞的值是否爲安全整數。 |
使用方法:
let a1 = 3.1415, a2 = '3.1114'; Number.parseFloat(a1); // 3.1415; Number.parseFloat(a2); // 3.1111; parseFloat(a1); // 3.1415; parseFloat(a2); // 3.1111; Number.parseFloat == parseFloat;// true
let a1 = '0110'; Number.parseInt(a1, 2); // 6 Number.parseInt(a1, 10); // 110 Number.parseInt = parseInt; // true
Number.isFinite(Infinity); // false Number.isFinite(NaN); // false Number.isFinite(-Infinity); // false Number.isFinite(0); // true Number.isFinite(2e64); // true Number.isFinite('0'); // false, 全局函數 isFinite('0') 會返回 true
Number.isInteger(0); // true Number.isInteger(1); // true Number.isInteger(-100000); // true Number.isInteger(0.1); // false Number.isInteger(Math.PI); // false Number.isInteger(Infinity); // false Number.isInteger(-Infinity); // false Number.isInteger("10"); // false Number.isInteger(true); // false Number.isInteger(false); // false Number.isInteger([1]); // false
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // 下面這幾個若是使用全局的 isNaN() 時,會返回 true。 Number.isNaN("NaN"); // false,字符串 "NaN" 不會被隱式轉換成數字 NaN。 Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN("blabla"); // false // 下面的都返回 false Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN("37"); Number.isNaN("37.37"); Number.isNaN(""); Number.isNaN(" ");
Number.isSafeInteger(3); // true Number.isSafeInteger(Math.pow(2, 53)) // false Number.isSafeInteger(Math.pow(2, 53) - 1) // true Number.isSafeInteger(NaN); // false Number.isSafeInteger(Infinity); // false Number.isSafeInteger("3"); // false Number.isSafeInteger(3.1); // false Number.isSafeInteger(3.0); // true
數字類型原型上的方法:
方法 | 描述 | 案例 |
---|---|---|
toExponential() |
返回一個數字的指數形式的字符串 | 1.23e+2 |
toFixed() |
返回指定小數位數的表示形式 | var a=123,b=a.toFixed(2)//b="123.00" |
toPrecision() |
返回一個指定精度的數字。 | a=123中,3會因爲精度限制消失var a=123,b=a.toPrecision(2)//b="1.2e+2" |
toExponential()
以指數表示法返回該數值字符串表示形式,可接收一個參數指定小數點後幾位數字。
let a = 99.6633; let a1 = '字符串:' + a.toExponential(); // "字符串:9.96633e+1" let a2 = '字符串:' + a.toExponential(2);// "字符串:9.97e+1"
toFixed()
使用定點表示法來格式化一個數,可接收一個參數指定保留小數點後幾位,取值爲0-20之間。
注意: 返回的數據類型是字符串類型。
let a = 1.2345; a.toFixed(); // "1" a.toFixed(2); // "1.23"
toPrecision()
以指定的精度返回該數值對象的字符串表示,可接收一個參數,用來指定有效數個數的整數。
let a = 1.2345; let a1 = '字符串:' + a.toPrecision(); // "字符串:1.2345" let a2 = '字符串:' + a.toPrecision(1);// "字符串:1" let a2 = '字符串:' + a.toPrecision(2);// "字符串:1.2"
JS內置的數學對象Math
,有不少屬性和方法,這裏須要注意的是Math
對象中的三角函數參數都是弧度制的。
方法 | 描述 |
---|---|
abs() |
絕對值 |
sin() , cos() , tan() |
標準三角函數;參數爲弧度 |
asin() , acos() , atan() , atan2() |
反三角函數; 返回值爲弧度 |
sinh() , cosh() , tanh() |
雙曲三角函數; 返回值爲弧度. |
asinh() , acosh() , atanh() |
反雙曲三角函數;返回值爲弧度. |
pow() , exp() , expm1() , log10() , log1p() , log2() |
指數與對數函數 |
floor() , ceil() |
返回最大/最小整數小於/大於或等於參數 |
min() , max() |
返回一個以逗號間隔的數字參數列表中的較小或較大值(分別地) |
random() |
返回0和1之間的隨機數。 |
round() ,fround() , trunc() |
四捨五入和截斷函數 |
sqrt() , cbrt() , hypot() |
平方根,立方根,平方參數的和的平方根 |
sign() |
數字的符號, 說明數字是否爲正、負、零。 |
clz32() ,imul() |
在32位2進製表示中,開頭的0的數量.返回傳入的兩個參數相乘結果的類C的32位表現形式 |
完整的描述和使用方法,建議查看 MDN Math
本部份內容到這結束
Author | 王平安 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
每日文章推薦 | https://github.com/pingan8787... |
JS小冊 | js.pingan8787.com |
歡迎關注微信公衆號【前端自習課】天天早晨,與您一塊兒學習一篇優秀的前端技術博文 .