真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在javascript中使用toFixed()函數(shù)-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)如何在javascript中使用toFixed()函數(shù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

toFixed還不同的瀏覽器實現(xiàn),在IE10及以上里面是正常的四舍五入,但是別的瀏覽器里面就不一樣了,它不是正常的四舍五入(等下重點說),比如:

var a = 1.335;
console.log(a.toFixed(2))
// IE   1.34
//chorme 1.33

其他的瀏覽器我沒去一一測試,所以如果大家用了其他瀏覽器的還是需要去實際測試一下,我這里就說說javascript的toFixed()方法的四舍五入原理:

toFixed它是一個四舍六入五成雙的詭異的方法(也叫銀行家算法),"四舍六入五成雙"含義:對于位數(shù)很多的近似數(shù),當有效位數(shù)確定后,其后面多余的數(shù)字應(yīng)該舍去,只保留有效數(shù)字最末一位,這種修約(舍入)規(guī)則是“四舍六入五成雙”,也即“4舍6入5湊偶”這里“四”是指≤4 時舍去,"六"是指≥6時進上,"五"指的是根據(jù)5后面的數(shù)字來定,當5后有數(shù)時,舍5入1;當5后無有效數(shù)字時,需要分兩種情況來講:①5前為奇數(shù),舍5入1;②5前為偶數(shù),舍5不進。(0是偶數(shù))

但是,經(jīng)過我的測試發(fā)現(xiàn),在chorme下面(最新版),并沒有完全遵守這個規(guī)則,尤其是5的后面沒有數(shù)字的時候,不是這么判斷的,如下:

var b = 1.335
b.toFixed(2)
"1.33"
var b = 1.345
b.toFixed(2)
"1.34"
var b = 1.355
b.toFixed(2)
"1.35"
var b = 1.365
b.toFixed(2)
"1.36"
var b = 1.375
b.toFixed(2)
"1.38"
var b = 1.385
b.toFixed(2)
"1.39"

可以發(fā)現(xiàn)在chorme下沒有完全去遵循這個規(guī)律,或許它有自己的算法,但是畢竟它沒有遵循通用的銀行家算法,所以tofixed這個方法在涉及到金錢計算的業(yè)務(wù)中還是少用,
最好別用,否則可能會出大問題!
下面再再說說我自己的做法,就是根據(jù)精確位數(shù)來取小數(shù)點后的數(shù),然后判斷精確位是大于4還是小于等于4,上代碼吧,不說了:
我們的業(yè)務(wù)是最多精確到分,也就是兩位小數(shù),最少就是取整,不留小數(shù)

function moneySwitch(money, precision){//precision是需要精確的位數(shù),如百分位就是2
 var result = 0;
 //先進行一個千分位的四舍五入,保證3.0999這種情況在保留一位小數(shù)的時候能是對的,這一位可以這么做沒什么問題
 var money = parseFloat(money).toFixed(3);
 try{
  var int_part = money.split(".")[0], //小數(shù)點前的整數(shù)
  point_num = money.split(".")[1],//取小數(shù)點后面的小數(shù)
  precision_num = point_num[3-precision];
  if(precision_num>4){//五入的情況
   if(precision==1){
    point_num = parseInt(point_num)+10+"";
    if(point_num.length>3){//說明往整數(shù)位進1
     int_part = parseInt(int_part)+1+"";
     point_num = point_num[1]+point_num[2];
    }else{
     point_num = point_num[0]+point_num[1];
    }
    result = parseFloat(int_part+"."+point_num);
   }else if(precision==2){
    point_num = parseInt(point_num)+100+"";
    if(point_num.length>3){//說明往整數(shù)位進1
     int_part = parseInt(int_part)+1+"";
     point_num = point_num[1];
    }else{
     point_num = point_num[0];
    }
    result = parseFloat(int_part+"."+point_num);
   }else if(precision==3){
    int_part = parseInt(int_part)+1+"";
    point_num = 0;
   }
   result = parseFloat(int_part+"."+point_num);
  }else{//四舍的情況
   if(precision==1){
    point_num = point_num[0]+point_num[1];
   }else if(precision==2){
    point_num = point_num[0];
   }else if(precision==3){
    point_num = 0;
   }
   result = parseFloat(int_part+"."+point_num);
  } 
 }catch(e){
  return parseFloat(money).toFixed(2);//如果過程中有出錯就tofixed代替為解決
 }
 return result;
}

補充:

js處理數(shù)字保留2位小數(shù),強制保留2位小數(shù)不夠補上.00

1、保留兩位小數(shù) //功能:將浮點數(shù)四舍五入,取小數(shù)點后2位

2、//制保留2位小數(shù),如:2,會在2后面補上00.即2.00





Test


 
 //保留兩位小數(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);  
 } 
 
 document.write("四舍五入 
")  document.write("3.14159267保留2位小數(shù):" + toDecimal(3.14159267)+"
");   document.write("3.14159267強制保留2位小數(shù):" + toDecimal2(3.14159267)+"
");   document.write("3.14159267保留2位小數(shù):" + toDecimal(3.14559267)+"
");   document.write("3.14159267強制保留2位小數(shù):" + toDecimal2(3.15159267)+"
");   document.write("3.14159267保留2位小數(shù):" + fomatFloat(3.14559267, 2)+"
");   document.write("3.14159267保留1位小數(shù):" + fomatFloat(3.15159267, 1)+"
");      document.write("五舍六入 
")  document.write("1000.003保留2位小數(shù):" + 1000.003.toFixed(2)+"
");   document.write("1000.08保留1位小數(shù):" + 1000.08.toFixed(1)+"
");   document.write("1000.04保留1位小數(shù):" + 1000.04.toFixed(1)+"
");   document.write("1000.05保留1位小數(shù):" + 1000.05.toFixed(1)+"
");      document.write("科學(xué)計數(shù) 
")  document.write(3.1415+"科學(xué)技術(shù)后:"+3.1415.toExponential(2)+"
");   document.write(3.1455+"科學(xué)技術(shù)后:"+3.1455.toExponential(2)+"
");   document.write(3.1445+"科學(xué)技術(shù)后:"+3.1445.toExponential(2)+"
");   document.write(3.1465+"科學(xué)技術(shù)后:"+3.1465.toExponential(2)+"
");   document.write(3.1665+"科學(xué)技術(shù)后:"+3.1665.toExponential(1)+"
");   document.write("精確到n位,不含n位 
")  document.write("3.1415精確到小數(shù)點第2位" + 3.1415.toPrecision(2)+"
");   document.write("3.1455精確到小數(shù)點第3位" + 3.1465.toPrecision(3)+"
");   document.write("3.1445精確到小數(shù)點第2位" + 3.1415.toPrecision(2)+"
");   document.write("3.1465精確到小數(shù)點第2位" + 3.1455.toPrecision(2)+"
");   document.write("3.166592679287精確到小數(shù)點第5位" + 3.141592679287.toPrecision(5)+"
");   

看完上述內(nèi)容,你們對如何在javascript中使用toFixed()函數(shù)有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)頁題目:如何在javascript中使用toFixed()函數(shù)-創(chuàng)新互聯(lián)
標題來源:http://weahome.cn/article/ioeds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部