日期:2014-05-16  浏览次数:20346 次

找个0舍1入的js
如:
JScript code

function digitForIgnore(digit,count)
{
  //方法体
}


运行效果:
JScript code

digitForIgnore(1.234,1)=1.3
digitForIgnore(1.234,2)=1.24

digitForIgnore(1.20034,1)=1.3




求教方法体里应该怎么写?谢谢

------解决方案--------------------
JScript code
<script language="javascript">
function digitForIgnore(digit,count)
{
  digit=digit.toString();
  var str="";
  if(digit.indexOf(".")!=-1){
    var n=digit.split(".");
    var b=n[1];    
    if(b.length>count)
    {
      str=b.substring(0,count);
      if(b.substring(b.length-count,b.length-count+1)!=0){
        str++
      }
      str=n[0]+"."+str;
    }else{
      for(var i=0;i<count-b.length;i++){
         str+="0";
      }
      str=digit+str;
    }
  }else{
      for(var i=1;i<=count;i++){
         str+="0";
      }
      str=digit+"."+str;
  }
  return str;
}
alert(digitForIgnore(1.234,1));//1.3
alert(digitForIgnore(1.234,2));//1.24
alert(digitForIgnore(1.20034,1));//1.3
alert(digitForIgnore(1.2,3));//1.200
alert(digitForIgnore(1.211,3));//1.211
alert(digitForIgnore(23,3));//23.000
</script>

------解决方案--------------------
<script type="text/javascript">
(function(){
if(!window['Z']){
window['Z']={};
}
function round(num,prec){
var a=9;
for(var i=0;i<=prec;i++){
a=a/10;
}
num+=a;
var start=(num+"").indexOf(".");
var end=start+prec+1;
num=(num+"").substring(0,end);
return num;
}
window['Z']['round']=round;
}
 )();
alert(Z.round(1.234,1));
alert(Z.round(1.234,2));
alert(Z.round(1.20034,1));
</script>
不明白你的意思
为什么digitForIgnore(1.20034,1)=1.3啊
不是1.2后是0应该是1.2吗?
------解决方案--------------------
JScript code

 function digitForIgnore(digit,count)
 {
    return isNaN(digit) || isNaN(count) ? NaN : Math.ceil(digit*Math.pow(10,count))*Math.pow(10,-count)
 }

------解决方案--------------------
逻辑

1. Math.floor(1.234*Math.pow(10,1)+1)/Math.pow(10,1) = 1.3
2. Math.floor(1.234*Math.pow(10,2)+1)/Math.pow(10,2) = 1.24
3. .................

所以:
var result = Math.floor(digit*Math.pow(10,count)+1)/Math.pow(10,count) 


算法就 第一个数乘以10的count次方,然后结果+1后,再取整数(舍去小数),然后除以count次方即可!

中间还需要考虑到数字的异常情况。