也是在经典看到的帖子,原文地址
规则如下
1金=100银;1银=100铜;1铜=100铁;银币、铜币、铁币最高额为99,金币无限制。1银等价于1人民币通过用户输入 金币 银币 铜币 铁币的数值 计算能得到多少人民币!第一次遭遇整数和小数相加的精度问题,因为预知小数的位数,所以采用toFixed来控制输出,但是自知这不是好方法。望高手指点。
通过baidu,找到这个处理浮点运算误差问题的函数。这个函数只是处理加法的运算,还有处理减法、乘法、除法的函数,可以上网找找。
function accAdd(arg1,arg2,arg3,arg4) { var r1,r2,r3,r4,m; try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;} try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;} try{r3=arg3.toString().split(".")[1].length;}catch(e){r3=0;} try{r4=arg4.toString().split(".")[1].length;}catch(e){r4=0;} m = Math.pow(10,Math.max(r1,r2,r3,r4)); return (arg1*m+arg2*m+arg3*m+arg4*m)/m;}
完整的代码如下:
1 2 3 4 5货币计算程序 6 10 11 12请在下面输入金币、银币、铜币以及铁币,然后转换成人民币。
13注意:银币、铜币和铁币数量不得大于99,金币无限制。
14金币:
银币: 铜币: 铁币: 15 44 45