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);
}
}