日期:2014-05-16 浏览次数:20373 次
function digitForIgnore(digit,count) { //方法体 }
digitForIgnore(1.234,1)=1.3 digitForIgnore(1.234,2)=1.24 digitForIgnore(1.20034,1)=1.3
<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吗?
------解决方案--------------------
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次方即可!
中间还需要考虑到数字的异常情况。