JavaScript的原始類型之數字

2021-01-08 博你一生無怨無悔

Js的數字數據類型有兩種,一種是使用IEEE745格式來表示的數值型,存儲的最大範圍在2的正負53次方之間,也是我們經常使用的類型,還有一種是BigInt類型,用來存儲任意類型的數字,但是用的地方不多,我們主要學習第一種常用數字類型。

一、字面量格式的表示方法

1、十進位:十進位整數可以直接像數學中一樣書寫,也是我們日常開發中最常用的一種進位,例如:let num = 10;

2、八進位:ECMAJavascript規定,八進位字面值的第一位必須是0,如果我們書寫的數值超出了八進位的範圍,那麼0將會被瀏覽器忽略,後面的數值將會被當作十進位來解析(八進位的範圍是0-7)。需要注意的是,在嚴格模式下,八進位如果超出書寫的範圍會報錯。例如:

嚴格模式下報錯:

3、十六進位

十六進位的前兩位必須是0x,後面跟著的是十六進位數字(0-9以及A-F,字母可以是大寫也可以是小寫);例如:

說明:(1)、在進行算術計算時,我們書寫的八進位和十六進位都會轉換為十進位。

(2)、我們在書寫十進位的時候,ke可能有時候會遇到有很多0的情況,數0數的眼花不說,還容易亂,在js中提供了一種簡單的寫法,用e表示,例如:9.7e7表示的是9.7乘以10的7次冪,如果是-7的話就是10的-7次冪。是不是感覺簡單多了。

(3)、十六進位的使用一般是表示顏色值,例如:0xFF;

二、浮點數值

浮點數值,書寫的數值中必須包含小數點而且小數點後面必須有一位,但是需要注意的是,保存浮點數的值需要的內存空間是整數的2倍,因此ECMAJavascript是不會放過任何一個可以將浮點型轉換為整型的機會,如果你的項目中規定必須使用小數,就要注意一下。

說明:1、不要使用js做比較精確的數值運算,那樣你會瘋掉的,不相信你可以試試使用js計算一下0.1+0.2的值,絕對不是0.3,這是由於數字的存儲序列的問題,

有個解決的辦法就是使用toFixed( n )對結果進行取捨。

2、js常用的取捨內置函數;

(1)、Math.toFixed(n);向下取捨,n值代表的是小數的位數,返回值是一個字符串,如果返回的小數位不足,用0補齊。例如:1.1變成1,-1.1變成-2;

(2)、Math.ceil(n);向上取捨,例如:1.1變成2,-1.1變成-1;

(3)、Math.round(n);四捨五入,

三、NAN

NAN即非數,是js數值型裡面的一個特殊值,經常用來表示一個原設定要返回數值的操作未返回數值,這也體現了js的靈活性,這樣做就不會報錯,不會阻止後續程序的執行。

說明:(1)、凡是涉及到NAN的計算最終的結果都是NAN,NAN最狠的是連自己也不認識,即NAN不等於任何值,包括其自身。

(2)、鑑於以上情況,js用isNAN( )來判斷我們輸入的值是不是NAN,返回的結果是一個布爾值。

四、兩個內置的轉換函數

1、轉換為整型parseInt( );

處理整數時常用的轉換函數;會忽略字符串前面的空格,直至找到第一個非空格字符,

轉換規則:

a、如果第一個非空格字符不是數字或者負號,就會返回NAN;與number不同的是,需要注意的是number會將空字符串轉換成0,但是parseInt()會轉換為NAN;

b、如果第一個字符是數字,會繼續解析第二個字符,直到遇到非數字字符停止,然後將前面讀取到的數值返回,例如parseInt("123456abc"),轉換的結果為123456,由於parseInt()是整型函數,會忽略小數點以後的數字字符,例如:parseInt(123.5),結果是123;

c:特別需要注意的是在parseInt()轉換中,如果字符串是以ox開頭且後面跟著數字字符,會被當作十六進位數來處理,字符串以0開頭會被當作八進位處理;例如:parseInt("oxf"),結果是15;(如果不會進位轉換,建議先去百度學習一下)!

d、在js老版本中,會發生進位混亂的情況,為了解決這一問題,可以為parseInt()提供第二個參數,例如parseInt("oxf",16)明確指出為16進位,避免了錯誤的解析;建議在書寫時指定進位,以免出現解析失敗的情形。

2、轉換為浮點型parseFloat( );

a、特別注意一點:parseFloat()只能轉換十進位數值,永遠沒有第二個參數的寫法,如果書寫了八進位或者十六進位,八進位被當作十進位處理,十六進位會被轉換成0;例如parseFloat(「oxf」)轉換的結果是0;

b、parseFloat()只識別第一個小數點,第二個小數點是無效的;例如:parseFloat(「123.5.6」),轉換的結果是123.5;

c、parseFloat()也可以採用科學計數法的方式書寫,書寫方法為parseFloat(「3.125e7」),轉換的結果是31250000;e代表科學計數法當中的10;

3、轉換為數值型Number( );

程序會從左到右去挨個讀取number裡面的值,直到遇到一個非數字類型的值停止;

Number轉換規則:

a、如果第一個數字是0,程序會直接忽略數字0,直接讀取下一個數字;例如:number(0123),其結果是123;

b、如果第一個是非數,直接返回NAN,例如:number(a122);結果是NAN;當一個數字是0,第二個數字是非數時,返回的結果也是NAN;如果以數字開頭,但是包含字母、下劃線等,會直接返回NAN.例如:number("1123abc")結果是NAN;但是小數點會當作浮點類型處理,不會停止程序運行,例如:number(123.05),結果是123.05;

c、如果是空字符串則返回0;例:Number("");結果為0;引號之間添加空格或者書寫數字0其結果相同;

d、如果轉換的是布爾值,true和false將分別被轉換為1和0;

e、如果是null,返回0;如果是undefined,返回NAN;

f、如果字符串中包含有效的十六進位格式,例如number(「oxf」);會先將其轉換為大小相同的十進位整數值;其中ox是十六進位的標識符,轉換結果為15;

好了,今天的內容基本上完了,今天的任務是完成以下測試(圖片來自騰訊課堂渡一教育):

圖片來自騰訊課堂渡一教育

相關焦點

  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascript Date對象javascript String對象JavaScript常用於實現一些前端效果。前些年流行的flash已經慢慢的被淘汰,js盛行起來。javascript :客戶端編程。javascript是由客戶端去解釋運行的。
  • 什麼是javascript?javascript需要學哪些內容?這篇文章告訴你!
    4.5 變量的命名規則變量的命名:變量是由字母,數字,下劃線,$組成,但第一個字符必須是字母或者是下劃線,$開頭。剩餘可以是任意字母,美元符號,下劃線和數字(3)不能使用javascript中的關鍵字(保留字)來命名變量(4)中文也可以聲明變量,不建議使用它。
  • AJAXRPC: javascript調用服務端方法
    同步調用 <script type="text/javascript">......try{ var obj = Test.sayHello('world!'); ......}catch(e){ //e.error 錯誤碼 //e.message 錯誤描述}......
  • JavaScript中的「黑話」
    為邏輯非操作符,可以應用於ECMAScript中的任何值,無論這個值是什麼類型,它會被強制轉化為一個布爾值變量,再對其值取反。!!只是單純的將操作數執行兩次邏輯非,它能將任意類型的值轉化為相應的布爾值,它包含的步驟為:將一個值轉化為布爾值;將其取反;再次取反。
  • JavaScript入門教程
    起源javascript前身叫做livescript,sun公司推出java,netspace公司引進java的概念,重新設計livescript,並更名javascript。發明者,布蘭登.艾克,表單驗證原先要經過伺服器,伺服器壓力大,等待時間長,js僅在客戶端就可完成。是什麼是一種腳本語言,是一種輕量級的程式語言。
  • 什麼是JavaScript對象?如何創建並引用?這就告訴你!
    最後一個鍵值對末尾不用加逗號var obj = {key1:value1,key2:value2};2.2 對象的構成對象是JavaScript的核心概念,也是最重要的數據類型。JavaScript的所有數據都可以被視為對象。此外,JavaScript 允許自定義對象。
  • 一天一點JavaScript編程知識:Animation動畫
    前言總算是寫完了基礎類型篇的內容。這次咱們來聊一聊動畫。閒話就不多扯了,直接開始正文。PS:供複製的代碼,但是請注意,圖片資源需要調整一下<html> <head> <title>JavaScript Animation</title> <script type = "text/javascript"> var imgObj = null; function init() { imgObj
  • Python數字類型Number
    本篇介紹Python中的數字類型,文中會討論整型、浮點型、布爾型和複數類型。通過本篇的學習,可以達成如下目標。(1) 整型的運用(2) 浮點型的運用(3) 布爾型的運用(4) 複數的運用。數字類型提供了標量存儲和直接訪問。
  • 數據類型:Number類型 String類型 Object類型
    其中,八進位字面值的第一位必須是零(0),然後是八進位數字序列(0~7)。  如果字面值中的數值超出了範圍,那麼前導零將被忽略,後面的數值將被當作十進位數值解析。浮點數值  所謂浮點數值,就是該數值中必須包含一個小數點,並且小數點後面必須至少有一位數字。  雖然小數點前面可以沒有整數,但我們不推薦這種寫法。
  • 來一輪帶注釋的demo,徹底搞懂javascript中的replace函數
    javascript這門語言一直就像一位帶著面紗的美女,總是看不清,摸不透,一直專注伺服器端,也從來沒有特別重視過,直到最近幾年,javascript越來越重要,越來越通用。最近和前端走的比較近,藉此機會,好好鞏固一下相關知識點。
  • 2.5 JavaScript數據類型的轉換
    JavaScript是一種弱類型的程式語言,使用時無須指定數據類型。但在對表達式進行求值時,通常需要所有的操作數都屬於某種特定的數據類型。例如,進行算術運算時要求操作數都是數值類型,進行字符串連接運算時要求操作數都是字符串類型,而進行邏輯運算時則要求操作數都是布爾類型,這就需要數據類型之間的轉換。
  • 第五篇:JavaScript事件處理
    庫的網頁代碼(案例代碼見unit12\case1.html):<html><head><title>JavaScript開發案例</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript
  • 第四篇:JavaScript基本數據類型
    JavaScript基本數據類型有String(字符串類型)、Number(數字類型)、Boolean(布爾類型)、Array(數組類型)、Date(日期類型)。不同於Java語言,JS 語言是弱數據類型,聲明變量時不需要說明數據類型,JS解釋器會自動根據變量的值賦予變量對應的數據類型。
  • 在JavaScript中,使用replace()、test()和exec()方法匹配字符串
    JavaScript核心代碼如下:<script type="text/javascript">var str = "Hello Microsoft!"使用字符串替換的核心JavaScript代碼如下:<script type="text/javascript">var str = "一都編程,每個知識就是一個案例。"
  • JavaScript - Math對象
    中其實是有很多數學計算的需求的,不過不必擔心系統給我們提供了大量的數學運算的方法供我們使用而這些方法全都存在於我們的Math對象中Math常用的屬性:Math.PI 相當於π 3.14159Math對象常用的函數:1.Math.round() 四捨五入舉個小例子:<script type = 「text/javascript
  • 程式設計師必須掌握的 12 個 JavaScript 技能!
    本文將與大家分享 12 個實用的 JavaScript 技能,未來我也將在 Github 的 JS Tips&Tidbits 倉庫(https://github.com/nas5w/javascript-tips-and-tidbits)中持續更新此概念列表。
  • 劍橋學者:新冠病毒有三種類型,「原始類型」大量流行於美國
    4月8日,來自英國劍橋大學麥克唐納考古研究所等機構的研究人員在國際權威期刊《美國國家科學院院刊》(PNAS)發表文章《新冠病毒基因組系統進化網絡分析》,認為全球範圍內的新冠病毒可劃分三種類型,且在美國大量流行的可能是「原始類型」。
  • 在JavaScript字符串的search()方法中,如何匹配正則表達式?
    Search()方法返回的類型是一個整數值:返回第一次匹配到的字符串的開始索引值,索引值是從0開始的。如果字符串沒有在正則表達式中匹配到,則返回-1。4.2. 參數是正則表達式當我們使用JavaScript定義一個字符串後,在字符串對象上可以使用search()方法,並且可以將正則表達式做為參數傳入到該方法中。
  • 分享幾個javascript實用函數
    從本文開始小編將定期發布javascript相關的代碼集錦,每次發十個與大家分享,首先是數組篇,也許有人會說,可以用常用的lodash的等庫啊。* 如果是原始的 數組不能均勻分割,最後的chunk將包含剩餘的元素。*/compact/*** compact* 從數組中刪除可為false的值。* 使用Array.prototype.filter()過濾掉falsey值(false,null,0,「」,undefined和NaN)。
  • Javascript去除字符串中的點或其他符號
    在前端上使用javascript進行操作的。測試了兩次沒有好用,程序直接把整個字符串都進行了替換,在考慮這個是為什麼呢?javascript(請忽略此配圖)示例var ip = data.field.ip.replace(/.