数据处理的一些方法

1、保留小数点后两位:四舍五入 alert(num.toFixed(2));
2、保留小数点后两位:把后面舍去 Math.floor(15.7784514000 * 100) / 100 // 输出结果为 15.77

yuanToCent(yuan){
        var arr = String(yuan).split(".");
        var a = arr[0]+(arr.length>1?(arr[1].length==1?(arr[1]+"0"):arr[1].substring(0,2)):"00");
        return parseInt(a) ;
      },
yuanToCent(5.55)/100 //调用时需要除以100之后数值才是对应的

3、下面是针对特殊数字精度的处理

<html>
 <head>
  <script>
    function countMoney(){
		var totalMoney = document.querySelector("#totalMoney").value;
		var noMoney = document.querySelector("#noMoney").value;
		var rate = document.querySelector("#rate").value;
		var result = _countMoneyToCents(totalMoney,noMoney,rate);
		document.querySelector("#result").value = centToYuan(result);
		document.querySelector("#yh").value = centToYuan(result-yuanToCent(totalMoney));
	}
	/**
	 * 金额相乘
	 */
	function _countMoneyToCents(yuan,noMoney,rate){
		yuan = yuanToCent(yuan) ;
		rate = rate*10 ;
		noMoney = yuanToCent(noMoney) ;
		return Math.ceil((yuan-noMoney)*rate/100)+noMoney ;
	}
	/**
	 * 整数除以100没问题
	 */
	function centToYuan(cent){
		return cent/100;
	}
	/**
	* 最好的元转分,如果使用yuan*100仍有可能丢失精度(eg:555.55*100=55554.99999999999)
	* @param yuan 元,超过两位小数只取两位,不足两位补0
	*/
	function yuanToCent(yuan){
		var arr = yuan.split(".");
		var a = arr[0]+(arr.length>1?(arr[1].length==1?(arr[1]+"0"):arr[1].substring(0,2)):"00");
		return parseInt(a) ;
	}
 
 </script>
 </head>
 <body>
总金额:  <input name="totalMoney" id="totalMoney"/><br/>
不参与折扣:<input name="noMoney" id="noMoney"/><br/>
折扣率:<input  name="rate" id="rate" />eg:9.9<br/>
<a href="javascript:countMoney()">计算金额</a><br />
折后结果:<input  name="result" id="result" />~ 优惠价:<input  name="yh" id="yh" />

 </body>
</html>

4、保留n位小数,四舍五入

		let num=1.2356478
        this.retain=Math.round(num * Math.pow(10, n)) / Math.pow(10, n)

5、数值的加减乘除:

//加
function accAdd(arg1, arg2) {
            var r1, r2, m;
            if(arg1==null){
                arg1=0
            }
            if(arg2==null){
                arg2=0
            }
            try {
                r1 = arg1.toString().split(".")[1].length
            }
            catch (e) {
                r1 = 0
            }
            try {
                r2 = arg2.toString().split(".")[1].length
            }
            catch (e) {
                r2 = 0
            }
            m = Math.pow(10, Math.max(r1, r2))
            return (arg1 * m + arg2 * m) / m
 }
        //减
 function accSub(arg1,arg2) {
        	if(arg1==null){
                arg1=0
            }
            if(arg2==null){
                arg2=0
            }
     		var r1,r2,m,n;
    		try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
    		try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
     		m=Math.pow(10,Math.max(r1,r2));
     		n=(r1>=r2)?r1:r2;
    	 	return ((arg2*m-arg1*m)/m).toFixed(n);
}
 //乘
 function accMul(arg1, arg2) {
            if(arg1==null){
                arg1=0
            }
            if(arg2==null){
                arg2=0
            }
            var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
            try {
                m += s1.split(".")[1].length
            }
            catch (e) { }
            try {
                m += s2.split(".")[1].length
            }
            catch (e) { }
            return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
 }
//除
function accDiv(arg1, arg2) {
            var t1 = 0, t2 = 0, r1, r2;
            if (arg1 == null) {
                arg1 = 0
            }
            if (arg2 == null) {
                arg2 = 0
            }
            try {
                t1 = arg1.toString().split(".")[1].length
            }
            catch (e) { }
            try {
                t2 = arg2.toString().split(".")[1].length
            }
            catch (e) { }
            with (Math) {
                r1 = Number(arg1.toString().replace(".", ""))
                r2 = Number(arg2.toString().replace(".", ""))
                return (r1 / r2) * pow(10, t2 - t1);
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值