微信小程序之js 字符串轉(zhuǎn)換成數(shù)字的三種方法, 取float型小數(shù)點后兩位數(shù)的方法

在js讀取文本框或者其它表單數(shù)據(jù)的時候獲得的值是字符串類型的,例如兩個文本框a和b,如果獲得a的value值為11,b的value值為9 ,那么a.value要小于b.value,因為他們都是字符串形式的.在網(wǎng)上找了一下js字符串轉(zhuǎn)數(shù)字的文章,這個比較全
方法主要有三種
轉(zhuǎn)換函數(shù)檩禾、強制類型轉(zhuǎn)換啸如、利用js變量弱類型轉(zhuǎn)換。

  1. 轉(zhuǎn)換函數(shù):

js提供了parseInt()和parseFloat()兩個轉(zhuǎn)換函數(shù)拂铡。前者把值轉(zhuǎn)換成整數(shù),后者把值轉(zhuǎn)換成浮點數(shù)埂伦。只有對String類型調(diào)用這些方法潦牛,這兩個函數(shù)才能正確運行;對其他類型返回的都是NaN(Not a Number)狠角。
一些示例如下:
代碼如下:

parseInt("1234blue"); //returns 1234  
parseInt("0xA"); //returns 10  
parseInt("22.5"); //returns 22  
parseInt("blue"); //returns NaN  
parseInt()方法還有基模式,可以把二進制蚪腋、八進制丰歌、十六進制或其他任何進制的字符串轉(zhuǎn)換成整數(shù)√肟基是由parseInt()方法的第二個參數(shù)指定的立帖,示例如下: 
parseInt("AF", 16); //returns 175  
parseInt("10", 2); //returns 2  
parseInt("10", 8); //returns 8  
parseInt("10", 10); //returns 10  

如果十進制數(shù)包含前導(dǎo)0,那么最好采用基數(shù)10悠砚,這樣才不會意外地得到八進制的值晓勇。例如:
代碼如下:

parseInt("010"); //returns 8  
parseInt("010", 8); //returns 8  
parseInt("010", 10); //returns 10  
parseFloat()方法與parseInt()方法的處理方式相似。  

使用parseFloat()方法的另一不同之處在于灌旧,字符串必須以十進制形式表示浮點數(shù)绑咱,parseFloat()沒有基模式。
下面是使用parseFloat()方法的示例:
代碼如下:

parseFloat("1234blue"); //returns 1234.0  
parseFloat("0xA"); //returns NaN  
parseFloat("22.5"); //returns 22.5  
parseFloat("22.34.5"); //returns 22.34  
parseFloat("0908"); //returns 908  
parseFloat("blue"); //returns NaN  
  1. 強制類型轉(zhuǎn)換
    還可使用強制類型轉(zhuǎn)換(type casting)處理轉(zhuǎn)換值的類型枢泰。使用強制類型轉(zhuǎn)換可以訪問特定的值描融,即使它是另一種類型的。
    ECMAScript中可用的3種強制類型轉(zhuǎn)換如下:
    Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型宗苍;
    Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點數(shù))稼稿;
    String(value)——把給定的值轉(zhuǎn)換成字符串。
    用這三個函數(shù)之一轉(zhuǎn)換值讳窟,將創(chuàng)建一個新值,存放由原始值直接轉(zhuǎn)換成的值敞恋。這會造成意想不到的后果丽啡。
    當要轉(zhuǎn)換的值是至少有一個字符的字符串、非0數(shù)字或?qū)ο螅ㄏ乱还?jié)將討論這一點)時硬猫,Boolean()函數(shù)將返回true补箍。如果該值是空字符串、數(shù)字0啸蜜、undefined或null坑雅,它將返回false。
    可以用下面的代碼段測試Boolean型的強制類型轉(zhuǎn)換衬横。
    代碼如下:
Boolean(""); //false – empty string  
Boolean("hi"); //true – non-empty string  
Boolean(100); //true – non-zero number  
Boolean(null); //false - null  
Boolean(0); //false - zero  
Boolean(new Object()); //true – object  

Number()的強制類型轉(zhuǎn)換與parseInt()和parseFloat()方法的處理方式相似裹粤,只是它轉(zhuǎn)換的是整個值,而不是部分值蜂林。示例如下:
代碼如下:
用法結(jié)果
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
最后一種強制類型轉(zhuǎn)換方法String()是最簡單的遥诉,示例如下:
代碼如下:

var s1 = String(null); //"null"  
var oNull = null;  
var s2 = oNull.toString(); //won't work, causes an error  
  1. 利用js變量弱類型轉(zhuǎn)換

舉個小例子拇泣,一看,就會明白了矮锈。
代碼如下:

<script>  
var str= '012.345 ';  
var x = str-0;  
x = x*1;  
</script>  

上例利用了js的弱類型的特點霉翔,只進行了算術(shù)運算,實現(xiàn)了字符串到數(shù)字的類型轉(zhuǎn)換苞笨,不過這個方法還是不推薦的;

js中取小數(shù)點后兩位方法最常用的就是四舍五入函數(shù)了债朵,前面我介紹過js中四舍五入一此常用函數(shù),這里正好用上瀑凝,下面我們一起來看取float型小數(shù)點后兩位一些方法總結(jié)
以下我們將為大家介紹 JavaScript 保留兩位小數(shù)的實現(xiàn)方法:
四舍五入
以下處理結(jié)果會四舍五入:

var num =2.446242342;    
num = num.toFixed(2); // 輸出結(jié)果為 2.45    

不四舍五入
以下處理結(jié)果不會四舍五入:
第一種葱弟,先把小數(shù)邊整數(shù):

Math.floor(15.7784514000 * 100) / 100      
// 輸出結(jié)果為 15.77    

第二種,當作字符串猜丹,使用正則匹配:

Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))      
// 輸出結(jié)果為 15.77,不能用于整數(shù)如 10 必須寫為10.0000   

注意:如果是負數(shù)芝加,請先轉(zhuǎn)換為正數(shù)再計算,最后轉(zhuǎn)回負數(shù)

javascript保留兩位小數(shù)的實例:

<script type="text/javascript">     
    //保留兩位小數(shù)      
    //功能:將浮點數(shù)四舍五入射窒,取小數(shù)點后2位     
    function toDecimal(x) {     
      var f = parseFloat(x);     
      if (isNaN(f)) {     
        return;     
      }     
      f = Math.round(x*100)/100;     
      return f;     
    }     
     
     
    //制保留2位小數(shù)藏杖,如:2,會在2后面補上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("強制保留2位小數(shù):" + toDecimal2(3.14159267));     
    alert("保留2位小數(shù):" + toDecimal(3.14559267));     
    alert("強制保留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é)計數(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ù)點第2位" + 3.1415.toPrecision(2));     
    alert("精確到小數(shù)點第3位" + 3.1465.toPrecision(3));     
    alert("精確到小數(shù)點第2位" + 3.1415.toPrecision(2));     
    alert("精確到小數(shù)點第2位" + 3.1455.toPrecision(2));     
    alert("精確到小數(shù)點第5位" + 3.141592679287.toPrecision(5));     
  </script>  

用Javascript取float型小數(shù)點后兩位蝌麸,例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. 最笨的辦法

復(fù)制代碼 代碼如下:

function get()
{
var s = 22.127456 + "";
var str = s.substring(0,s.indexOf(".") + 3);
alert(str);
}

  1. 正則表達式效果不錯

復(fù)制代碼 代碼如下:

<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>

  1. 他就比較聰明了.....

代碼如下:

<script>  
var num=22.127456;  
alert( Math.round(num*100)/100);  
</script> 

4.會用新鮮東西的朋友....... 但是需要 IE5.5+才支持艾疟。

5.js保留2位小數(shù)(強制)

對于小數(shù)點位數(shù)大于2位的来吩,用上面的函數(shù)沒問題,但是如果小于2位的蔽莱,比如:changeTwoDecimal(3.1)弟疆,將返回3.1,如果你一定需要3.10這樣的格式盗冷,那么需要下面的這個函數(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;  
}  

功能:將浮點數(shù)四舍五入怠苔,取小數(shù)點后2位,如果不足2位則補0,
這個函數(shù)返回的是字符串的格式用法:changeTwoDecimal(3.1415926)返回3.14 changeTwoDecimal(3.1)返回3.10

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仪糖,一起剝皮案震驚了整個濱河市柑司,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锅劝,老刑警劉巖攒驰,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異故爵,居然都是意外死亡玻粪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奶段,“玉大人饥瓷,你說我怎么就攤上這事”约” “怎么了呢铆?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹲缠。 經(jīng)常有香客問我棺克,道長,這世上最難降的妖魔是什么线定? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任娜谊,我火速辦了婚禮,結(jié)果婚禮上斤讥,老公的妹妹穿的比我還像新娘纱皆。我一直安慰自己,他們只是感情好芭商,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布派草。 她就那樣靜靜地躺著,像睡著了一般铛楣。 火紅的嫁衣襯著肌膚如雪近迁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天簸州,我揣著相機與錄音鉴竭,去河邊找鬼。 笑死岸浑,一個胖子當著我的面吹牛搏存,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播助琐,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼祭埂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兵钮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤舌界,失蹤者是張志新(化名)和其女友劉穎掘譬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呻拌,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡葱轩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片靴拱。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡垃喊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袜炕,到底是詐尸還是另有隱情本谜,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布偎窘,位于F島的核電站乌助,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陌知。R本人自食惡果不足惜他托,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仆葡。 院中可真熱鬧赏参,春花似錦、人聲如沸沿盅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗡呼。三九已至纸俭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間南窗,已是汗流浹背揍很。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留万伤,地道東北人窒悔。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像敌买,于是被迫代替她去往敵國和親简珠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容