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