数据处理的一些方法

被刻印的时光 ゝ 提交于 2020-01-10 03:57:03

保留小数点后两位:alert(num.toFixed(2));

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之后数值才是对应的

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

<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>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!