yupianer 发表于 2013-1-29 08:46:11

javascript小数四舍五入(转自网络)

javascript小数四舍五入(保留n位小数四舍五入)javascript小数四舍五入
一、问题的产生:
自己在编码时,在javascript中遇到了3.21*3=9.629999999999999的现象
二、百度一下
得到如下信息:
用Javascript取float型小数点后两位,例22.127456取成22.13,如何做?
1. 最笨的办法....... [我就怎么干的.........]
function get()
{
    var s = 22.127456 + "";
    var str = s.substring(0,s.indexOf(".") + 3);
    alert(str);
}
2. 正则表达式效果不错
<script type="text/javascript">
onload = function(){
    var a = "23.456322";
    var aNew;
    var re = /(+\.{2})*/;
    aNew = a.replace(re,"$1");
    alert(aNew);
}
</script>
3. 他就比较聪明了.....
<script>
var num=22.127456;
alert( Math.round(num*100)/100);
</script>
4.会用新鲜东西的朋友....... 但是需要 IE5.5+才支持。
<script>
var num=22.127456;
alert( num.toFixed(2));
</script>
三、总结后,自己写了个javascript多位数四舍五入的通用方法
//num表示要四舍五入的数,v表示要保留的小数位数。
function decimal(num,v)
{
    var vv = Math.pow(10,v);
    return Math.round(num*vv)/vv;
}
 
 
----------------------------------------------------------------------------------

/** * 四舍五入方法,参数:Dight要四舍五入的浮点型数,how 保留的小数位数,changeType 找零方式* 找零方式,0.不处理(0.71->0.71),1.四舍五入(0.71->0.7),2.上取整(0.71->0.8),3.下取整(0.71->0.7)*/function forDight(cost,How,changeType){if(changeType == '0'){//不处理return cost;}else if(changeType == '1'){//四舍五入cost = Math.round(cost*Math.pow(10,How))/Math.pow(10,How); return cost;}else if(changeType == '2'){//上取整cost = Math.ceil(cost*Math.pow(10,How))/Math.pow(10,How);return cost;}else{//下取整cost =Math.floor(cost*Math.pow(10,How))/Math.pow(10,How);return cost;}}
页: [1]
查看完整版本: javascript小数四舍五入(转自网络)