LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JavaScript 中的四舍五入

admin
2024年4月29日 11:3 本文熱度 1189

在 JavaScript 中,對數(shù)值進行四舍五入操作的場景有以下幾種:

  • 向上取整:ceil

  • 向下取整:floor

  • 四舍五入:round

  • 固定精度:toFixed

  • 固定長度:toPrecision

  • 取整:trunc、parseInt、位運算

本文將對這 6 個 API 進行簡單的講解和總結。

1、向上取整: ceil

ceil 是`天花板`的意思,表示在一個數(shù)值之上,且距離該數(shù)最近的整數(shù)。ceil 是 Math 對象的靜態(tài)方法,需要傳遞一個參數(shù),其調(diào)用方法如下:

1
2
Math.ceil(12.34); //13
Math.ceil(12.68); //13

2、向下取整: floor

floor 是`地板`的意思,表示在一個數(shù)值之下,且距離該數(shù)最近的整數(shù)。floor 是 Math 對象的靜態(tài)方法,需要傳遞一個參數(shù),其調(diào)用方法如下:

1
2
Math.floor(12.34); // 12
Math.floor(12.68); // 12

3、四舍五入: round

round 的作用是對一個浮點數(shù)進行四舍五入,并保留整數(shù)位。round 也是 Math 對象的靜態(tài)方法,也需要傳遞一個參數(shù),其調(diào)用方法如下:

1
2
Math.round(12.34); // 12
Math.round(12.54); // 13

4、固定精度: toFixed

toFixed 和上面三個方法不同,它是 Number 原型上實現(xiàn)的一個方法,其作用是對一個浮點數(shù)進行四舍五入并保留固定小數(shù)位 toFixed 需要傳遞一個參數(shù),其調(diào)用方式如下:

1
2
100.456001.toFixed(2); // 100.46
100.456001.toFixed(3); // 100.456

5、固定長度: toPrecision

toPrecison 也是 Number 原型上實現(xiàn)的一個處理浮點數(shù)的方法,和 toFixed 不同的是,它是對一個浮點數(shù)進行四舍五入并保留固定長度的有效數(shù)字,包括整數(shù)部分。

1
2
99.456001.toPrecision(5);  // 99.456
100.456001.toPrecision(5); // 100.46

 6、取整: parseInt

parseInt 是 全局對象 window上的一個方法,其作用是對一個可轉換的數(shù)值取整,分為以下兩種情況:

1. 將字符串數(shù)值轉化為 Number 整數(shù),對字符串的每一個字符進行轉化,直到遇到不可轉化的字符(包括小數(shù)點)停止。

2. 對浮點類型數(shù)值取整,忽略小數(shù)部分,不做四舍五入處理

1
2
3
4
5
6
7
8
// 字符串數(shù)值
parseInt('100') ; // 100
parseInt('100axt'); // 100
parseInt('100xh20'); // 100
parseInt('100.78'); // 123
// Number 類型
parseInt(100.12) ; // 100
parseInt(100.78); // 100

7、取整: 位運算

  • | 0   : 和 0 進行 按位或 操作,原值不變

  • ~~   : 兩次 按位非 操作得到的也是原值

  • >> 0 : 右移 0 位

  • << 0 : 左移 0 位

  • >>> 0: 無符號右移 0 位 

這些位運算符在實現(xiàn)取整操作時,會表現(xiàn)出一些共同的特征:

  • 對于 Number 類型來說,直接應用位操作, 和 parseInt 得到的結果幾乎一樣;

  • 對于其他類型,內(nèi)部會先通過 Number() 將其轉換為一個數(shù)值,然后再應用位操作。

  • 對特殊 NaN 和 Infinity 值應用位操作時,這兩個值都會被當成 0 來處理 。

對于 Number 類型,直接應用位運算。

1
2
3
4
5
~~ 100.12;  //  100
100.78  |  0;    //  100
100.45 >>  0;    //  100
100.50 <<  0;   // 100
100.96 >>> 0;    //  100

對于其他類型,先使用 Number() 轉換為數(shù)值類型,再進行位運算。

1
2
3
4
5
6
7
8
9
10
11
12
~~ '100.12'  // 100, Number('100.12') == 100.12
'100.50'  >> 0;  // 100,Number('100.50') == 100.50
'100.96'  << 0;  // 100,Number('100.96') == 100.96
~~ 'abc'  // 0 , Number('abc') == NaN
'12abc'  >> 0;  // 0, Number('12abc') == NaN
undefined | 0 ; // 0, Number(undefined) == NaN
~~null;      // 0 , Number(null) == 0
true >> 0; // 1 , Number(true) == 1
false >> 0; //0 , Number(false) == 0
[]  << 0;     // 0 , Number([]) == 0
~~NaN; // 0
Infinity >>> 0; // 0

位運算作用于最基本的層次上,即按內(nèi)存中表示數(shù)值的位來操作數(shù)值。

位運算能取整的原因是:

ECMAScript 中的數(shù)值以64位雙精度浮點數(shù)存儲,但位運算只能作用于整數(shù),因此要先將 64 位的浮點數(shù)轉換成 32 位的整數(shù),然后再進行位運算,最后再將計算結果轉換成64位浮點數(shù)存儲。

 

8、取整: trunc

trunc 是 Math 對象上新增的 Api,用于去除一個數(shù)的小數(shù)部分,返回整數(shù)部分:

1
2
3
Math.trunc(1.2); // 1
Math.trunc(1.8); // 1
Math.trunc(0.5); // 0

該文章在 2024/4/29 11:03:18 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲免费人成视频在线观看 | 视频思思久久免费国产 | 一本久久精品国产综合 | 日本免费一级一区二区三区 | 综合欧美日韩一区二区 | 在线欧美日韩亚洲国产一区 |