U盘版系列打印套打凭证合计金额数字不对
(创建时间:2010年09月01日 01:33:00)
Jangogo : 

U盘版系列里面,某个客户使用了 公式 ?合计数字 来打印会计凭证的合计金额。

结果在一些特殊数字下会出现金额差一分钱,例如 157.89 这个金额打印后显示157.88

原因:

JS 对小数的运算精度有几大的问题,实际上这些问题在VBS里面同样存在。

 alert(157.89*100)  试试 ,你会得到一个很奇怪的结果

这个Bug已经 Fixed , 但是编程人员应该注意这个问题,因为这问题不能根本解决,只能再实际碰到某个功能开发的时候解决。

本次只是更新了 凭证打印 功能(voucherprint.asp)

function Digi(tr, c, n) {
    //必须round45,否则js的精度问题会导致合计数据不对,例如157.89*100=15788.9999999999999....
    //不信alert(157.89*100)看看!!
  n=Util.round45(Util.cNum(n)*100,2); //n=Util.cNum(n)*100;
  if(n==0){
    tr.childNodes[c].text='';
    return '';
  }
  n=String(n);
  if(n.indexOf(".")>-1){
     n=n.substring(0,n.indexOf("."));
  }
  var v='';
  var v1='';
  for(var i=0;i<n.length;i++){
    v=n.substring(n.length-i-1,n.length-i);
    if(i==0)v1=v;
    tr.childNodes[c-i].text=v;
  }
  return v1;
}
任务记录:
文档中心bug