需求:
在一些實時的展示計算利息或者成本實,剩余的占比和百分比逗堵。
到下面的效果:
實現(xiàn)步驟:
首先在日利率input 中添加 oninput事件秉氧,oninput="showValue(this.value)"眷昆。
function showValue(obj){
? ? //結(jié)算占日比率例
? ?var local_bl = parseFloat(obj);
? ?var local_basebl = parseFloat(rll);
? ?$("#F0004").html(toDecimal2(local_bl/local_basebl*100));
? ?rbl=toDecimal4(local_bl/local_basebl);
? ?input_bl = local_bl;
? ?$("#syrll").html(numSub(numSub(rll,zh_rll),input_bl));
}
不四舍五入的方法:
因為計算的利息不四舍五入,準(zhǔn)備保留2為小數(shù)和4為小數(shù)的方法:
//不四舍五入
function toDecimal2(x) {
? ?var f = x;
? ?if(typeof x=="number")
? ?var f = parseFloat(f);
? ? if (isNaN(f)) {
? ? ? ?return false;
? ?}
? ?var s = f.toString();
? ?var rs = s.indexOf('.');
? ?if (rs < 0) {
? ? ? rs = s.length;
? ? ?s += '.00';
?}
else{
? ? s = s.split(".")[0]+"."+s.split(".")[1].substring(0,2);
}
? ?return s;
}
//不四舍五入,保留四位
function toDecimal4(x) {
var f = x;
if(typeof x=="number")
var f = parseFloat(f);
if (isNaN(f)) {
return false;
}
var s = f.toString();
var rs = s.indexOf('.');
if (rs < 0) {
rs = s.length;
s += '.00';
}
else{
s = s.split(".")[0]+"."+s.split(".")[1].substring(0,4);
}
return s;
}
運算:
float數(shù)字的運算
//除法
function numSub(num1, num2) {
? ?var baseNum, baseNum1, baseNum2;
? ?var precision;// 精度
? ?try {
? ? ? ?baseNum1 = num1.toString().split(".")[1].length;
? ?} catch (e) {
? ? ?baseNum1 = 0;
? }
try {
? ? ?baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
? ? baseNum2 = 0;
}
? ? ?baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
? ? precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
? ? return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
};
//乘法
function accMul(arg1,arg2) {
? ? 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 numAdd(num1, num2) {
var baseNum, baseNum1, baseNum2;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
return (num1 * baseNum + num2 * baseNum) / baseNum;
}