91在线视频播放|成人黄视频在线观看|在线视频福利|天天欲色成人综合网站|国产国语videosex护士

機構檔案
  • 機構級別:普通會員
  • 信用等級:

在線交談:點擊這里給我發消息

咨詢熱線:029-62258374

學校評價(我要提問/點評)

  • 學校被點評:0
  • 好評(0%)
  • 中評(0%)
  • 差評(0%)

資料認證

    未通過身份證認證 未通過身份證認證

    未通過辦學許可認證 未通過辦學許可認證

  • 學校瀏覽人次:
  • 加盟時間:2017年03月10日
新聞動態

西安尚學堂在JavaScript中判斷值是否為整型

發布者:西安尚學堂 發布時間:2017-03-16 來源:西安尚學堂

整數類型(Integer)在JavaScript經常會導致一些奇怪的問題。在ECMAScript的規范中,他們只存在于概念中:所有的數字都是浮點數,并且整數只是沒有一組沒有小數的數字。今天,西安尚學堂的小編給大家解釋如何去檢查某個值是否為整型。

ECMAScript 5

在ES5中有很多方法你可以使用。有時侯,你可能想用自己的方法:一個isInteger(x)的函數,如果是整型返回true,否則返回false.

讓我們看看一些例子。

通過余數檢查

你可以使用余數運算(%),將一個數字按1求余,看看余數是不是0。

  function isInteger(x) {
  return x % 1 === 0;
  }

這個方法非常簡單,并且有效。

  > isInteger(17)
  true
  > isInteger(17.13)
  false

在操作余數運算時你得小心一點,因為結果取決于第一個數的符號,如果是正的,結果就是正的;否則就是負的。

  > 3.5 % 1
  0.5
  > -3.5 % 1
  -0.5

然后,我們也可以檢查0,這其實不是一個問題。但問題是:這個方法對非數字也會返回true,因為 % 會將它轉換成數字:

  > isInteger('')
  true
  > isInteger('33')
  true
  > isInteger(false)
  true
  > isInteger(true)
  true

可以通過很簡單的類型檢查來解決:

  function isInteger(x) {
  return (typeof x === 'number') && (x % 1 === 0);
  }

通過Math.round()

如果一個數字取整以后還跟之前的值一樣,那么它就是整數。在JavaScript中可以通過Math.round()來檢查:

  function isInteger(x) {
  return Math.round(x) === x;
  }

這個方法也不錯

  > isInteger(17)
  true
  > isInteger(17.13)
  false

它也可以判斷非數字,因為Math.round()總是返回數字,并且===只有當類型一樣時才返回true.

  > isInteger('')
  false

如果你想讓代碼更清晰一點,你可以添加類型檢查。另外,Math.floor()和Math.ceil()可以像Math.round()一樣工作。

通過位操作檢查

位操作符提供另外一種“取整”的方法:

  function isInteger(x) {
  return (x | 0) === x;
  }

這個解決方案(跟其它位運算一樣)有一個缺陷:它無法處理超過32位的數字。

  > isInteger(Math.pow(2, 32))
  false

通過parseInt()檢查

parseInt()也提供了跟Math.round()類似將數字轉換成整型的方法。

讓我們看看這個方法為什么不錯。

  function isInteger(x) {
  return parseInt(x, 10) === x;
  }

像Math.round()解決方案一樣,它也可以處理非數字的情況,但是它也不能正確地處理所有的整型數字:

  > isInteger(1000000000000000000000)
  false

parseInt()在解析整數之前強迫將第一個參數解析成字符串。因此使用這種方法將數字轉換成整型不是一個好的選擇。

  > parseInt(1000000000000000000000, 10)
  1
  > String(1000000000000000000000)
  '1e+21'

就像上面那樣,parseInt()在解析'1e+21'時在1處停止處理了,所以它才會返回1.

ECMAScript 6

對于Math.round()扔補充,ES6提供了另外一個將數字轉換成整型的方法:Math.trunc()。該函數會移除數字的小數部分。

  > Math.trunc(4.1)
  4
  > Math.trunc(4.9)
  4
  > Math.trunc(-4.1)
  -4
  > Math.trunc(-4.9)
  -4

此外,ECMAScript6不需要去處理檢查整數那些瑣碎的任務,因為它帶有一個內置函數 Number.isInteger()。