国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript將浮點數轉換成整數的三個方法

2019-11-20 14:24:57
字體:
來源:轉載
供稿:網友

Summary

暫時我就想到3個方法而已。如果讀者想到其他好用方法,也可以交流一下

parseInt
位運算符
Math.floor Math.ceil

Description

一、parseInt

1. 實例

parseInt("13nash");//13parseInt("")// NaNparseInt("0xA") //10(十六進制)parseInt(" 13")//13parseInt("070")//ES3為56(八進制) ES5為70parseInt(070)//ES3和ES5都為56parseInt(22.5)//22

2. 轉換規則:

(1). 根據實例(1)得出parseInt會解析一直到非數字時停止
(2). 根據實例(2)得出parseInt解析空字符串時為NaN,而不是0
(3). 根據實例(3)得出parseInt可以將16進制數轉換成10進制
(4). 根據實例(4)得出parseInt忽略字符串的空格

3. 缺點:

(1). 根據實例(5)我們可以知道parseInt在轉換八進制數組時是不兼容的。ES3會把070看成八進制數值,但是ES5會將070看成十進制。
(2). 根據實例(6)(7)我們可以知道parseInt在執行的時候會先把參數轉變成字符串后再執行變成整數

4. 解釋:為什么(5)(6)執行都是執行將070轉換成整數,但是結果不一樣呢?這個也是解決怎么得到缺點中的第二點。

因為在看官方文檔中我看到了If string is not a string, then it is converted to one。這段話。就是說參數如果不是字符串的話,它會先將它轉換成字符串再轉換成整數。比如實例(6)中parseInt(070),其實是先將070轉換成字符串,你可以試下070+""或者String(070)都可以知道070會被轉換成"56",因為070是一個八進制。然后就變成了parseInt("56"),最后得出來的整數就是56了。不管你在ES3或者ES5都是為56

二、位操作符

1. 實例

console.log(0 | "123.45")//123console.log(0 | 123.45)//123console.log(0 ^ 123.45)//123console.log(~~123.45)//123

2. 原理:javascript沒有整數的概念,所有的數值型都是雙精度浮點數。在用位運算符時,它會先把操作數轉變成整數,方便操作。而0與其他值異或或者按位或都不會改變操作值的

三、Math.floor與Math.ceil

1. 實例

console.log(Math.floor(2.3)//2console.log(Math.floor(-2.3)//-3console.log(Math.ceil(2.3)//3console.log(Math.ceil(-2.3)//-2

2. 兩者不足:Math.floor得到的是數字的最小整數;而Math.ceil得到的是最大整數。所以導致本來-2.3我們取整的話我們要得到的是-2,但是用Math.floor得到的是-3。而2.3用Math.ceil得到的是3,但是我們要的是2就行了。

3. 解決:

//自行定義一個函數function getInt(val){return val>0 ? Math.floor(val):Math.ceil(val);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海南省| 仁化县| 兰坪| 巨鹿县| 凤庆县| 津南区| 桦川县| 紫金县| 浏阳市| 阿尔山市| 南涧| 文成县| 宣汉县| 大港区| 横山县| 高阳县| 广丰县| 抚顺市| 内乡县| 读书| 盐山县| 东丽区| 西华县| 湖州市| 黄大仙区| 绥中县| 浦东新区| 平乡县| 西平县| 麻栗坡县| 保靖县| 博湖县| 嘉兴市| 辰溪县| 紫阳县| 若尔盖县| 永顺县| 界首市| 普陀区| 新和县| 马龙县|