保留小数点后两位: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>
来源:CSDN
作者:攻城狮-张小白
链接:https://blog.csdn.net/weixin_45067101/article/details/103290338