var mygrid_recv_2;
var page_count = 5;
var column_count;
var jsonWmsZXInfoObj;
var changeCount = 0;
//两端去空格函数
String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); }
function $(id) {
return document.getElementById(id);
}
function initWinScreen2() {
var winScreenHeight = 0;
var winScreenWidth = 0;
if (window.screen.height) {
winScreenHeight = window.screen.height;
}
if (window.screen.width) {
winScreenWidth = window.screen.width;
}
if (winScreenWidth >= 1440 && winScreenWidth >= 900) {
document.getElementById("mygrid_recv_2").style.height = "580px";
}
else if (winScreenWidth >= 1366 && winScreenWidth >= 768) {
document.getElementById("mygrid_recv_2").style.height = "340px";
}
else if (winScreenWidth >= 1024 && winScreenWidth >= 768) {
document.getElementById("mygrid_recv_2").style.height = "300px";
}
}
function initGrid2(handle,settlementid,billno) {
mygrid_recv_2 = new dhtmlXGridObject('mygrid_recv_2');
mygrid_recv_2.setImagePath("../images/");
mygrid_recv_2.setSkin("xp");
// 0 1 2 3 4 5 6 7 8 9 10 11 12
//mygrid_recv_2.setHeader(",计费等级,费用类别,计费区间,单位,单价,增值价,封顶价,结束计费日期,备注,创建人,创建时间,委托单号");
// 0 1 2 3 4 5 6 7 8
mygrid_recv_2.setHeader("选择,客户名称,单号,实录时间,币别,汇率,实录金额,未核销金额,本次核销"); //
mygrid_recv_2.setInitWidths("30,120,100,120,50,50,80,80,80");
mygrid_recv_2.setColAlign("center,center,center,center,center,center,center,center,center");
mygrid_recv_2.setColSorting("na,str,str,str,str,str,str,str,str");
mygrid_recv_2.setColTypes("ch,ro,ro,ro,ro,ro,ro,ro,ed");
var urlVal = "../Settlements/DoPayApplicationSettlementGridSource.aspx?read=exist&customername=" + escape($("txt_customerName").value) + "&handle=" + handle + "&settlementid=" + settlementid + "&billno=" + billno + "&feetype=" + $("h_feetype").value + "&val=" + newGuid();
var loader = dhtmlxAjax.getSync(urlVal);
var loadVal = loader.xmlDoc.responseText;
loader = null;
if (parseInt(loadVal) == 1) {
mygrid_recv_2.loadXML("../Settlements/DoPayApplicationSettlementGridSource.aspx?read=init&customername=" + escape($("txt_customerName").value) + "&handle=" + handle + "&settlementid=" + settlementid + "&billno=" + billno + "&feetype=" + $("h_feetype").value + "&val=" + newGuid());
setTimeout(function() {
}, 200);
}
mygrid_recv_2.init();
mygrid_recv_2.enableEditEvents(true, false, true);
mygrid_recv_2.enableMultiselect(true);
mygrid_recv_2.enableKeyboardSupport(true);
var pushVal = "";
var pressRecord = "";
var pressRowIndex = -1;
var pressCellIndex = -1;
var pressCount = 0;
var isExchange = false;
var shiftCount = 0;
var isDelete = 0;
var flagFilter = 0;
var flagTab = 0;
var flagEnter = 0;
var flagDelete = 0;
//手动编写Grid控件编辑事件,由于免费控件没有提供完整的编辑判断功能,现特此做更改
mygrid_recv_2.attachEvent("onEditCell", function (stage, rId, cInd, nValue, oValue) {
var newCheckValue = false;
//初始化状态
if (stage == 0) {
var selectedId = mygrid_recv_2.getSelectedRowId();
var rowIndex = mygrid_recv_2.getRowIndex(selectedId);
var oldVal = mygrid_recv_2.cellByIndex(rowIndex, 0).getValue().trim();
if (cInd == 0) {
return false;
}
return true;
}
if (stage == 1) {
var rowIndex = mygrid_recv_2.getRowIndex(rId);
var txtEdit;
for (i = 0; i < document.all.length; i++) {
if (document.all(i).tagName == "TEXTAREA") {
txtEdit = document.all(i);
txtEdit.focus();
txtEdit.select();
break;
}
}
}
//如果编辑结束
if (stage == 2) {
//获取当前RowIndex
var rowIndex = mygrid_recv_2.getRowIndex(rId);
if (cInd == 8) {
var wj = parseFloat(mygrid_recv_2.cellByIndex(rowIndex, 7).getValue().trim());
if (nValue.trim() != "") {
var isint = IsNum(nValue);
if (!isint) {
mygrid_recv_2.cellByIndex(rowIndex, cInd).setLabel("0.00");
return true;
}
//
if (parseFloat(nValue.trim()) > wj) {
alert("本次核销金额不能大于未核销金额!");
mygrid_recv_2.cellByIndex(rowIndex, cInd).setLabel("0.00");
return true;
}
//取数(包含负数)
mygrid_recv_2.cellByIndex(rowIndex, 0).setValue(1);
var bb = mygrid_recv_2.cellByIndex(rowIndex, 4).getValue().trim();
var hl = mygrid_recv_2.cellByIndex(rowIndex, 5).getValue().trim();
//
var je1 = parseFloat($("txt_je1").value.trim());
var je2 = parseFloat($("txt_je2").value.trim());
var je3 = parseFloat($("txt_je3").value.trim());
var je4 = parseFloat($("txt_je4").value.trim());
var je5 = parseFloat($("txt_je5").value.trim());
var hl1 = parseFloat($("txt_hl1").value.trim());
var hl2 = parseFloat($("txt_hl2").value.trim());
var hl3 = parseFloat($("txt_hl3").value.trim());
var hl4 = parseFloat($("txt_hl4").value.trim());
var hl5 = parseFloat($("txt_hl5").value.trim());
var bb3 = $("ddl_bb3").value.trim();
if (oValue.trim() == "") {
oValue = 0;
}
var hx = parseFloat(nValue) - parseFloat(oValue);
$("txt_je5").value = Add(je5 * hl5, hx * hl, 2);
if (bb == "USD") {
$("txt_je5").value = Div((je5 * hl5 + hx * hl), hl, 2);
}
$("h_je5").value = $("txt_je5").value;
var je32 = Cut((je1 * hl1 + je2 * hl2), ((je5 * hl5 + hx * hl) + je4 * hl4), 2);
if (je32 < 0) {
$("txt_je3").value = 0;
var je42 = Add(je4, je32, 2);
$("txt_je4").value = je42; //财务费用为RMB
}
else {
$("txt_je3").value = je32;
if (bb3 == "USD") {
$("txt_je3").value = Div(je32, hl3, 2);
}
$("txt_je4").value = round2(((je1 * hl1 + je2 * hl2) - (je5 * hl5 + hx * hl) - je32), 2);
}
//
$("ddl_bb5").value = bb;
$("h_bb5").value = bb;
$("txt_hl5").value = hl;
//$("txt_je5").value = round2(nValue, 2);
//#region 分开取大于0的数,并把小于等于0的设为0
// if (parseFloat(nValue.trim()) > 0) {
// mygrid_recv_2.cellByIndex(rowIndex, 0).setValue(1);
// var bb = mygrid_recv_2.cellByIndex(rowIndex, 4).getValue().trim();
// var hl = mygrid_recv_2.cellByIndex(rowIndex, 5).getValue().trim();
// $("ddl_bb5").value = bb;
// $("h_bb5").value = bb;
// $("txt_hl5").value = hl;
// $("txt_je5").value = round2(nValue, 2);
// //
// var je1 = parseFloat($("txt_je1").value.trim());
// var je2 = parseFloat($("txt_je2").value.trim());
// var je3 = parseFloat($("txt_je3").value.trim());
// var je4 = parseFloat($("txt_je4").value.trim());
// var je5 = parseFloat($("txt_je5").value.trim());
// var hx = parseFloat(nValue) - parseFloat(oValue);
// $("txt_je5").value = round2((je5 + (hx)),2);
// var je32 = round2(((je1 + je2) - ((je5 + (hx)) + je4)),2);
// if (je32 < 0) {
// $("txt_je3").value = 0;
// var je42 = round2((je4 + (je32)),2);
// $("txt_je4").value = je42;
// }
// else {
// $("txt_je3").value = je32;
// $("txt_je4").value = round2(((je1 + je2) - (je5 + (hx)) - je32),2);
// }
// }
// else {
// mygrid_recv_2.cellByIndex(rowIndex, 0).setValue(0);
// mygrid_recv_2.cellByIndex(rowIndex, cInd).setLabel("0.00");
// var bb = mygrid_recv_2.cellByIndex(rowIndex, 4).getValue().trim();
// var hl = mygrid_recv_2.cellByIndex(rowIndex, 5).getValue().trim();
// $("ddl_bb5").value = "RMB";
// $("h_bb5").value = "RMB";
// $("txt_hl5").value = "1";
// $("txt_je5").value = "0";
// //
// var je1 = parseFloat($("txt_je1").value.trim());
// var je2 = parseFloat($("txt_je2").value.trim());
// var je3 = parseFloat($("txt_je3").value.trim());
// var je4 = parseFloat($("txt_je4").value.trim());
// var je5 = parseFloat($("txt_je5").value.trim());
// var hx = parseFloat(oValue);
// $("txt_je5").value = round2((je5 - hx),2);
// var je32 = round2(((je1 + je2) - (je5 - hx) - je4),2);
// if (je32 < 0) {
// $("txt_je3").value = 0;
// var je42 = round2((je4 + (je32)),2);
// $("txt_je4").value = je42;
// }
// else {
// $("txt_je3").value = je32;
// $("txt_je4").value = round2(((je1 + je2) - (je5 - hx) - je32),2);
// }
// }
//#endregion
}
return true;
}
else {
return true;
}
}
});
//键盘操作事件
mygrid_recv_2.attachEvent("onKeyPress", function (code, cFlag, sFlag) {
//onKeyPress begin
//获取当前RowID
var selectedId = mygrid_recv_2.getSelectedRowId();
//获取当前RowIndex
var rowIndex = mygrid_recv_2.getRowIndex(selectedId);
//获取当前CellIndex(ind)
var ind = mygrid_recv_2.getSelectedCellIndex();
//触发操作事件前获取单元值
var oldVal = mygrid_recv_2.cellByIndex(rowIndex, ind).getValue();
//获取编辑单元
var txtEdit;
for (i = 0; i < document.all.length; i++) {
if (document.all(i).tagName == "TEXTAREA") {
txtEdit = document.all(i);
break;
}
}
if (code >= 65 && code <= 90) {//如果是输入英文字符
return false;
}
else {
return true;
}
});
setTimeout(function() {
markStatusColor2(mygrid_recv_2);
}, 400);
}
function saveRecvChange2() {
mygrid_recv_2.editStop();
var jsonRateObj = null;
for (var i = 0; i < mygrid_recv_2.getRowsNum(); i++) {
var rowId = mygrid_recv_2.getRowId(i);
var isbool = mygrid_recv_2.cellByIndex(i, 0).getValue();
if (isbool == "1") {
// 1 2 3 4 5 6 7
//客户名称,单号,实录时间,币别,实录金额,未核销金额,本次核销");
var CUSTOMERNAME = mygrid_recv_2.cellByIndex(i, 1).getValue(); //客户名称
var BILLNO = mygrid_recv_2.cellByIndex(i, 2).getValue(); //单号
var CREATETIME = mygrid_recv_2.cellByIndex(i, 3).getValue(); //实录时间
var CURRENCY = mygrid_recv_2.cellByIndex(i, 4).getValue(); //币别
var EXCHANGERATE = mygrid_recv_2.cellByIndex(i, 5).getValue(); //汇率
var AMOUNT = mygrid_recv_2.cellByIndex(i, 6).getValue(); //实录金额
var DOAMOUNT2 = mygrid_recv_2.cellByIndex(i, 7).getValue(); //未核销金额
var DOAMOUNT = mygrid_recv_2.cellByIndex(i, 8).getValue(); //本次核销
var ISFINISH = 0; //是否全部完成核销
if (i != 0 && parseFloat(DOAMOUNT) == 0) {
$("recvContainer_2").value = "";
alert("“本次核销”不能为零");
return -1;
}
if (DOAMOUNT == DOAMOUNT2) {
ISFINISH = 1;
}
//
if (jsonRateObj == null) {
var cacheBuffer = "";
cacheBuffer += "{";
cacheBuffer += "\"GID\":\"" + rowId + "\",";
cacheBuffer += "\"CUSTOMERNAME\":\"" + CUSTOMERNAME + "\",";
cacheBuffer += "\"BILLNO\":\"" + BILLNO + "\",";
cacheBuffer += "\"CREATETIME\":\"" + CREATETIME + "\",";
cacheBuffer += "\"CURRENCY\":\"" + CURRENCY + "\",";
cacheBuffer += "\"AMOUNT\":\"" + AMOUNT + "\",";
cacheBuffer += "\"DOAMOUNT2\":\"" + DOAMOUNT2 + "\",";
cacheBuffer += "\"DOAMOUNT\":\"" + DOAMOUNT + "\",";
cacheBuffer += "\"ISFINISH\":\"" + ISFINISH + "\"";
cacheBuffer += "}";
var result = "";
result += "{\"rates\":[";
result += cacheBuffer;
result += "]}";
jsonRateObj = eval('(' + result + ')');
} else {
var newRateRow = jsonRateObj.rates;
newRateRow = { GID: rowId, CUSTOMERNAME: CUSTOMERNAME, BILLNO: BILLNO, CREATETIME: CREATETIME, CURRENCY: CURRENCY, AMOUNT: AMOUNT, DOAMOUNT2: DOAMOUNT2, DOAMOUNT: DOAMOUNT, ISFINISH: ISFINISH };
jsonRateObj.rates.push(newRateRow);
}
}
}
if (jsonRateObj != null) {
$("recvContainer_2").value = JSON.stringify(jsonRateObj);
}
return 1;
}
//post数据
function postEnter() {
var myForm = document.getElementById("form1");
myForm.submit();
}
function markStatusColor2(gridObj) {
var count = gridObj.getRowsNum();
for (var i = 0; i < count; i++) {
var status = gridObj.cellByIndex(i, 0).getValue();
var rowId = gridObj.getRowId(i);
}
}
//全选框
function checkall2() {
var checkStatus = $("ck_all").checked;
if (checkStatus == 1) {
var iCount = mygrid_recv_2.getRowsNum();
for (var i = 0; i < iCount; i++) {
mygrid_recv_2.cellByIndex(i, 0).setValue(1);
}
}
else {
var iCount = mygrid_recv_2.getRowsNum();
for (var i = 0; i < iCount; i++) {
mygrid_recv_2.cellByIndex(i, 0).setValue(0);
}
}
}
//获取GUID
function newGuid() {
var guid = "";
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid.toUpperCase();
}
//------------------------------------------------------------------------------------------------------------------------
function clearNoNum2(valObj) {
//先把非数字的都替换掉,除了数字和.
valObj = valObj.replace(/[^\d.]/g, "");
//必须保证第一个为数字而不是.
valObj = valObj.replace(/^\./g, "");
//保证只有出现一个.而没有多个.
valObj = valObj.replace(/\.{2,}/g, ".");
//保证.只出现一次,而不能出现两次以上
valObj = valObj.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
return valObj;
}
//是否为数字
function IsNum(val) {
var re = /^[-\+]?\d+(\.\d+)?$/;
if (!re.test(val)) {
return false;
} else {
return true;
}
}
//是否为数字,且数值格式是否正确
function IsNumFormat(val) {
var re = /^[-\+]?\d+(\.\d+)?$/;
if (!re.test(val)) {
return false;
}
else {
if (val.toString().indexOf(".") > 0) {
val.toString().replace("-", "");
val.toString().replace("+", "");
if (val.toString().substr(0, 1) == "0" && val.toString().substr(0, 2) != "0.") {
return false;
}
}
else {
var re1 = /^[-\+]+[1-9]+[0-9]*]*$/;
if (!re1.test(val)) {
re1 = /^[1-9]+[0-9]*]*$/;
if (!re1.test(val)) {
return false;
}
}
}
return true;
}
}
//是否为整数
function IsIntFormat(val) {
re1 = /^[1-9]+[0-9]*]*$/;
if (!re1.test(val)) {
return false;
}
return true;
}
//
function getIsNum(x) {
var str = x.value.trim();
if (str == "0") {
return;
}
else if (str == "") {
str = 0;
x.value = 0;
}
else {
var bl = IsNumFormat(str);
if (!bl) {
alert("数值格式错误!");
x.focus();
x.select();
}
}
}
//-------------------------------------------------------------------------------------------------------
function txt_disabled() {
document.getElementById('ddl_bb1').disabled = true;
document.getElementById('ddl_bb2').disabled = false; // true;
document.getElementById('ddl_bb3').disabled = false;
document.getElementById('ddl_bb4').disabled = false;
document.getElementById('ddl_bb5').disabled = true;
document.getElementById('txt_hl1').readOnly = true;
document.getElementById('txt_hl2').readOnly = false; // true
document.getElementById('txt_hl3').readOnly = false;
document.getElementById('txt_hl4').readOnly = false;
document.getElementById('txt_hl5').readOnly = true
document.getElementById('txt_je1').readOnly = false;
document.getElementById('txt_je2').readOnly = false; // true
document.getElementById('txt_je3').readOnly = false;
document.getElementById('txt_je4').readOnly = false;
document.getElementById('txt_je5').readOnly = true
document.getElementById('txt_hl1').style.color = "#808080";
document.getElementById('txt_hl2').style.color = "#000000"; // "#808080";
document.getElementById('txt_hl3').style.color = "#000000";
document.getElementById('txt_hl4').style.color = "#000000";
document.getElementById('txt_hl5').style.color = "#808080";
document.getElementById('txt_je1').style.color = "#000000";
document.getElementById('txt_je2').style.color = "#000000"; // "#808080";
document.getElementById('txt_je3').style.color = "#000000";
document.getElementById('txt_je4').style.color = "#000000";
document.getElementById('txt_je5').style.color = "#808080";
}
function txt_je1_onblur() {
if ($("txt_je1").value.trim() != "") {
var oje1 = parseFloat($("h_je1").value.trim());
var je1 = parseFloat($("txt_je1").value.trim());
var je4 = parseFloat($("txt_je4").value.trim());
var je5 = parseFloat($("txt_je5").value.trim());
var hl1 = parseFloat($("txt_hl1").value.trim());
var hl3 = parseFloat($("txt_hl3").value.trim());
var hl4 = parseFloat($("txt_hl4").value.trim());
var hl5 = parseFloat($("txt_hl5").value.trim());
var bb3 = $("ddl_bb3").value.trim();
$("txt_je2").value = round2((je1 - oje1),2);
$("txt_je3").value = round2((je1 * hl1 - je4 * hl4 - je5 * hl5), 2);
if (bb3 == "USD") {
$("txt_je3").value = Div((je1 * hl1 - je4 * hl4 - je5 * hl5), hl3, 2);
}
$("txt_je1").value = oje1;
//#region 分开取大于0的数,并把小于等于0的设为0
// if (je1 > oje1) {
// $("txt_je2").value = round2((je1 - oje1),2);
// $("txt_je3").value = round2((je1 * hl1 - je4 * hl4 - je5 * hl5), 2);
// if (bb3 == "USD") {
// $("txt_je3").value = Div((je1 * hl1 - je4 * hl4 - je5 * hl5), hl3, 2);
// }
// }
// else {
// $("txt_je2").value = "0.00";
// }
// $("txt_je1").value = oje1;
//#endregion
}
}
function txt_je3_onblur() {
if ($("txt_je3").value.trim() != "") {
var je1 = parseFloat($("txt_je1").value.trim());
var je2 = parseFloat($("txt_je2").value.trim());
var je3 = parseFloat($("txt_je3").value.trim());
var je5 = parseFloat($("txt_je5").value.trim());
var hl1 = parseFloat($("txt_hl1").value.trim());
var hl2 = parseFloat($("txt_hl2").value.trim());
var hl3 = parseFloat($("txt_hl3").value.trim());
var hl5 = parseFloat($("txt_hl5").value.trim());
$("txt_je4").value = round2((je1 * hl1 + je2 * hl2 - je3 * hl3 - je5 * hl5), 2);
}
}
function txt_je4_onblur() {
if ($("txt_je4").value.trim() != "") {
var je1 = parseFloat($("txt_je1").value.trim());
var je2 = parseFloat($("txt_je2").value.trim());
var je4 = parseFloat($("txt_je4").value.trim());
var je5 = parseFloat($("txt_je5").value.trim());
var hl1 = parseFloat($("txt_hl1").value.trim());
var hl2 = parseFloat($("txt_hl2").value.trim());
var hl3 = parseFloat($("txt_hl3").value.trim());
var hl4 = parseFloat($("txt_hl4").value.trim());
var hl5 = parseFloat($("txt_hl5").value.trim());
var bb3 = $("ddl_bb3").value.trim();
$("txt_je3").value = round2((je1 * hl1 + je2 * hl2 - je4 * hl4 - je5 * hl5), 2);
if (bb3 == "USD") {
$("txt_je3").value = Div((je1 * hl1 + je2 * hl2 - je4 * hl4 - je5 * hl5), hl3, 2);
}
}
}
function setAccess(handle) {
if ($("h_isAccess").value.trim() == "0") {
$("h_isAccess").value = "1";
document.getElementById('mygrid_recv_2').style.display = "";
if (handle.toString().trim() == "add") {
initGrid2("add", "", "");
}
else {
initGrid2("edit", $("h_settlementid").value.trim(), $("h_billno").value.trim());
}
}
else if ($("h_isAccess").value.trim() == "1") {
$("h_isAccess").value = "0";
document.getElementById('mygrid_recv_2').style.display = "none";
//
var hl1 = parseFloat($("txt_hl1").value.trim());
var je1 = parseFloat($("txt_je1").value.trim());
var je2 = parseFloat($("txt_je2").value.trim());
var je3 = parseFloat($("txt_je3").value.trim());
var je4 = parseFloat($("txt_je4").value.trim());
var je5 = parseFloat($("h_je5").value.trim());
var hl1 = parseFloat($("txt_hl1").value.trim());
var hl2 = parseFloat($("txt_hl2").value.trim());
var hl3 = parseFloat($("txt_hl3").value.trim());
var hl4 = parseFloat($("txt_hl4").value.trim());
var hl5 = parseFloat($("txt_hl5").value.trim());
var bb3 = $("ddl_bb3").value.trim();
$("txt_je5").value = je5;
$("txt_je3").value = round2((je1 * hl1 + je2 * hl2 - je4 * hl4 - je5 * hl5), 2);
if (bb3 == "USD") {
$("txt_je3").value = Div((je1 * hl1 + je2 * hl2 - je4 * hl4 - je5 * hl5), hl3, 2);
}
//$("ddl_bb5").value = "RMB";
//$("txt_hl5").value = "1.0000";
//$("txt_je5").value = "0.00";
}
}
function setSHOW() {
if ($("h_isSHOW").value.trim() == "0") {
$("h_isSHOW").value = "1";
document.getElementById('divSHOW').style.display = "";
initGrid3();
}
else if ($("h_isSHOW").value.trim() == "1") {
$("h_isSHOW").value = "0";
document.getElementById('divSHOW').style.display = "none";
}
}
//#region js计算函数
round2 = function (str, length) {
var r2 = parseFloat(str).toFixed(8);
var r1 = parseFloat(r2).toFixed(parseInt(length));
return r1;
}
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
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);
}
}
//给Number类型增加一个div方法,调用起来更加方便。
Number.prototype.div = function (arg) {
return accDiv(this, arg);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
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)
}
//给Number类型增加一个mul方法,调用起来更加方便。
Number.prototype.mul = function (arg) {
return accMul(arg, this);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1, arg2) {
var r1, r2, m;
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
}
//给Number类型增加一个add方法,调用起来更加方便。
Number.prototype.add = function (arg) {
return accAdd(arg, this);
}
//加
function Add(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).add(parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
//减
function Cut(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).add(parseFloat(0) - parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
//乘
function Mul(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).mul(parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
//连乘
function Mul3(a, b, c, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c))).toFixed(parseInt(length));
return parseFloat(_r);
}
//除
function Div(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).div(parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
//#endregion