javascript精确计算

页面中直接加减乘数,如果有小数位时经常会出误差。

用以下方法可以避免误差

//加法 function FloatAdd(arg1, arg2) { 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; } n = Math.max(r1, r2); m = Math.pow(10, n); return Number(((arg1 * m + arg2 * m) / m).toFixed(n)); } //减法 function FloatSub(arg1, arg2) { 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 ((arg1 * m - arg2 * m) / m).toFixed(n); } //乘法 function FloatMul(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 FloatDiv(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); } }  

 

模板

<#import "common/common.ftl" as c>

 
  开票申请信息
申请单号  ${invoice.id} 发票类型  <#if invoice.invoiceType == 0 >普通<#else>增值税
客户名称  ${invoice.customerName} 税号  ${invoice.taxNumber}
地址  ${invoice.invoiceBankAddress} 电话  ${invoice.invoiceBankTel}
开户行  ${invoice.invoiceBankName} 帐号  ${invoice.invoiceBankAccount}
申请人  ${invoice.userName} 申请日期  ${invoice.date}
通知人  ${invoice.notifyName}

  产品信息
产品分类名称  ${invoice.productTypeName}
单位:元   
<#list product as prod>
序号 发货单号 产品合同号 产品编码 产品名称 规格型号 单位 数量 销售单价 开票金额
${prod_index+1} ${prod.getSendGoodsId()} ${prod.getProductContractCode()} ${prod.getProductCode()} ${prod.getProductName()} ${prod.getProductType()} ${prod.getProductUnit()} ${prod.getCount()} ${prod.getPrice()?string("#,##0.00")} ${prod.getMoney()?string("#,##0.00")}
开票金额合计 ${invoice.money?string("#,##0.00")}
  特殊说明
特殊说明 <@c.replaceBr str=invoice.text/> 
 

你可能感兴趣的:(java学习)