本文是小編針對(duì)js保留兩位小數(shù)這個(gè)大家經(jīng)常遇到的經(jīng)典問(wèn)題整理了在各種情況下的函數(shù)寫(xiě)法以及遇到問(wèn)題的分析,以下是全部?jī)?nèi)容:
創(chuàng)新互聯(lián):自2013年創(chuàng)立以來(lái)為各行業(yè)開(kāi)拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為1000多家公司企業(yè)提供了專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需規(guī)劃網(wǎng)站由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺(jué)效果,策劃師分析客戶的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
var num =2.446242342; num = num.toFixed(2); // 輸出結(jié)果為 2.45
第一種,先把小數(shù)邊整數(shù):
Math.floor(15.7784514000 * 100) / 100 // 輸出結(jié)果為 15.77
第二種,當(dāng)作字符串,使用正則匹配:
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) // 輸出結(jié)果為 15.77,不能用于整數(shù)如 10 必須寫(xiě)為10.0000
注意:如果是負(fù)數(shù),請(qǐng)先轉(zhuǎn)換為正數(shù)再計(jì)算,最后轉(zhuǎn)回負(fù)數(shù)
再分享一個(gè)經(jīng)典的解決四舍五入問(wèn)題后js保留兩位小數(shù)的方法:
//四舍五入保留2位小數(shù)(若第二位小數(shù)為0,則保留一位小數(shù)) function keepTwoDecimal(num) { var result = parseFloat(num); if (isNaN(result)) { alert('傳遞參數(shù)錯(cuò)誤,請(qǐng)檢查!'); return false; } result = Math.round(num * 100) / 100; return result; } //四舍五入保留2位小數(shù)(不夠位數(shù),則用0替補(bǔ)) function keepTwoDecimalFull(num) { var result = parseFloat(num); if (isNaN(result)) { alert('傳遞參數(shù)錯(cuò)誤,請(qǐng)檢查!'); return false; } result = Math.round(num * 100) / 100; var s_x = result.toString(); var pos_decimal = s_x.indexOf('.'); if (pos_decimal < 0) { pos_decimal = s_x.length; s_x += '.'; } while (s_x.length <= pos_decimal + 2) { s_x += '0'; } return s_x; }
如果大家想對(duì)javascript有系統(tǒng)深入的學(xué)習(xí),可以參閱 JavaScript啟示錄 PDF原書(shū)完整版 這本經(jīng)典書(shū)籍
<script type="text/javascript"> //保留兩位小數(shù) //功能:將浮點(diǎn)數(shù)四舍五入,取小數(shù)點(diǎn)后2位 function toDecimal(x) { var f = parseFloat(x); if (isNaN(f)) { return; } f = Math.round(x*100)/100; return f; } //制保留2位小數(shù),如:2,會(huì)在2后面補(bǔ)上00.即2.00 function toDecimal2(x) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x*100)/100; var s = f.toString(); var rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; } function fomatFloat(src,pos){ return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos); } //四舍五入 alert("保留2位小數(shù):" + toDecimal(3.14159267)); alert("強(qiáng)制保留2位小數(shù):" + toDecimal2(3.14159267)); alert("保留2位小數(shù):" + toDecimal(3.14559267)); alert("強(qiáng)制保留2位小數(shù):" + toDecimal2(3.15159267)); alert("保留2位小數(shù):" + fomatFloat(3.14559267, 2)); alert("保留1位小數(shù):" + fomatFloat(3.15159267, 1)); //五舍六入 alert("保留2位小數(shù):" + 1000.003.toFixed(2)); alert("保留1位小數(shù):" + 1000.08.toFixed(1)); alert("保留1位小數(shù):" + 1000.04.toFixed(1)); alert("保留1位小數(shù):" + 1000.05.toFixed(1)); //科學(xué)計(jì)數(shù) alert(3.1415.toExponential(2)); alert(3.1455.toExponential(2)); alert(3.1445.toExponential(2)); alert(3.1465.toExponential(2)); alert(3.1665.toExponential(1)); //精確到n位,不含n位 alert("精確到小數(shù)點(diǎn)第2位" + 3.1415.toPrecision(2)); alert("精確到小數(shù)點(diǎn)第3位" + 3.1465.toPrecision(3)); alert("精確到小數(shù)點(diǎn)第2位" + 3.1415.toPrecision(2)); alert("精確到小數(shù)點(diǎn)第2位" + 3.1455.toPrecision(2)); alert("精確到小數(shù)點(diǎn)第5位" + 3.141592679287.toPrecision(5)); </script>
用Javascript取float型小數(shù)點(diǎn)后兩位,例22.127456取成22.13,如何做?
1.丟棄小數(shù)部分,保留整數(shù)部分
parseInt(5/2)
2.向上取整,有小數(shù)就整數(shù)部分加1
Math.ceil(5/2)
3,四舍五入.
Math.round(5/2)
4,向下取整
Math.floor(5/2)
另類的方法
1. 最笨的辦法
function get() { var s = 22.127456 + ""; var str = s.substring(0,s.indexOf(".") + 3); alert(str); }
2. 正則表達(dá)式效果不錯(cuò)
<script type="text/javascript"> onload = function(){ var a = "23.456322"; var aNew; var re = /([0-9]+.[0-9]{2})[0-9]*/; aNew = a.replace(re,"$1"); alert(aNew); } </script>
3. 他就比較聰明了
<script> var num=22.127456; alert( Math.round(num*100)/100); </script>
4.會(huì)用新鮮東西的朋友....... 但是需要 IE5.5+才支持。
5.js保留2位小數(shù)(強(qiáng)制)
對(duì)于小數(shù)點(diǎn)位數(shù)大于2位的,用上面的函數(shù)沒(méi)問(wèn)題,但是如果小于2位的,比如:changeTwoDecimal(3.1),將返回3.1,如果你一定需要3.10這樣的格式,那么需要下面的這個(gè)函數(shù):
function changeTwoDecimal_f(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTwoDecimal->parameter error'); return false; } var f_x = Math.round(x * 100) / 100; var s_x = f_x.toString(); var pos_decimal = s_x.indexOf('.'); if (pos_decimal < 0) { pos_decimal = s_x.length; s_x += '.'; } while (s_x.length <= pos_decimal + 2) { s_x += '0'; } return s_x; }
function returnFloat(value){ var value=Math.round(parseFloat(value)*100)/100; var xsd=value.toString().split("."); if(xsd.length==1){ value=value.toString()+".00"; return value; } if(xsd.length>1){ if(xsd[1].length<2){ value=value.toString()+"0"; } return value; } }
JS取整數(shù),js取絕對(duì)值,js四舍五入(可保留兩位小數(shù))函數(shù)如下:
<SCRIPT language=javascript> <!-- function jsMath() { document.write(Math.floor(5.80) + "<br>");//取整或下舍入 document.write(Math.round(5.80) + "<br>");//四舍五入,取整數(shù) document.write(Math.round((5.80*100)/100) + "<br>");//四舍五入,保留兩位小數(shù) document.write(Math.ceil(5.10) + "<br>");//上舍入 document.write(Math.abs(-5.80) + "<br>");//取絕對(duì)值 document.write(Math.max(55,58) + "<br>");//返回兩個(gè)值中最大數(shù) document.write(Math.min(55,58) + "<br>");//返回兩個(gè)值中最小數(shù) } --> </SCRIPT> <div> <script>jsMath();</script> </div>
JS數(shù)據(jù)格式化是在進(jìn)行web前端開(kāi)發(fā)時(shí)常碰到的事情,特別是在數(shù)據(jù)類型為Float的數(shù)據(jù)就需要特殊處理,如保留兩位小數(shù)、小數(shù)點(diǎn)后的數(shù)據(jù)是否需要四舍五入等等。下面就來(lái)介紹實(shí)現(xiàn)數(shù)據(jù)格式化保留兩位小數(shù)的多種方法。
1、JS自帶的方法toFixed(),toFixed() 方法可把 Number 四舍五入為指定小數(shù)位數(shù)的數(shù)字。
語(yǔ)法:NumberObject.toFixed(num),mun是必需的參數(shù),即規(guī)定小數(shù)的位數(shù),是 0 ~ 20 之間的值,包括 0 和 20,有些實(shí)現(xiàn)可以支持更大的數(shù)值范圍。如果省略了該參數(shù),將用 0 代替,所以toFixed() 方法可以實(shí)現(xiàn)保留2位、3位、4位等等,取決于num的數(shù)值。
返回值:返回 NumberObject 的字符串表示,不采用指數(shù)計(jì)數(shù)法,小數(shù)點(diǎn)后有固定的 num 位數(shù)字。如果必要,該數(shù)字會(huì)被舍入,也可以用 0 補(bǔ)足,以便它達(dá)到指定的長(zhǎng)度。如果 num 大于 le+21,則該方法只調(diào)用 NumberObject.toString(),返回采用指數(shù)計(jì)數(shù)法表示的字符串。
當(dāng) num 太小或太大時(shí)拋出異常 RangeError。0 ~ 20 之間的值不會(huì)引發(fā)該異常。有些實(shí)現(xiàn)支持更大范圍或更小范圍內(nèi)的值。
當(dāng)調(diào)用該方法的對(duì)象不是 Number 時(shí)拋出 TypeError 異常。
<script type=”text/javascript”> var num = new Number(13.376954); document.write (num.toFixed(2)) </script> 輸出:13.38
2、自定義函數(shù)實(shí)現(xiàn)小數(shù)保留并四舍五入。
function roundFun(numberRound,roundDigit) { //四舍五入,保留位數(shù)為roundDigit if (numberRound>=0){ var tempNumber = parseInt((numberRound * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit); return tempNumber; } else{ numberRound1=-numberRound; var tempNumber = parseInt((numberRound1 * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit); return -tempNumber; } }
然后調(diào)用roundFun()這個(gè)函數(shù)就可以了。如roundFun('13.376954′,2);當(dāng)然返回的結(jié)果跟第一種方法是一樣的。
3、通過(guò)函數(shù)截取,截取到小數(shù)點(diǎn)后面第幾位,當(dāng)然這種方法就沒(méi)有四舍五入了。
<script type=”text/javascript”> tmp = 13.376954″ result = tmp.substr(0,tmp.indexOf(“.”)+2); alert(result); </script>
以上就是小編為大家整理的關(guān)于js保留兩位小數(shù)方法的總結(jié)內(nèi)容,感謝你的支持,如果你對(duì)js保留兩位小數(shù)方法還有任何不明白的地方,可以在下方的留言區(qū)討論。
網(wǎng)站欄目:js保留兩位小數(shù)方法總結(jié)
網(wǎng)頁(yè)路徑:http://bm7419.com/article12/jceodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、定制開(kāi)發(fā)、網(wǎng)站內(nèi)鏈、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)