javascript 计算
2011-03-04 16:39 惟恐天下不乱哥 阅读(148) 评论(0) 编辑 收藏 举报javascript在计算的时候,会产生精度的变化,导致计算的结果并非我们想要得到的值,如下面的代码,实际得到的值,其实不是28.21
1: var a = "28.22";
2: var b = "0.01";
3: var fa = parseFloat(CardBal);
4: var fb = parseFloat(CancelDepAmt);
5: var result = fa-fb;
如果通过下面的方法,就能够避免这种情况
1: function Sub_FloatNumberString(val1,val2)
2: {
3: var splitChar = ".";
4: var sp_val1 = val1.split(splitChar);
5: var sp_val2 = val2.split(splitChar);
6: var val1_point;
7: var val2_point;
8: if (sp_val1.length==1&&sp_val2.length==1)
9: {
10: return val1 - val2;
11: }
12: var more = 0;
13: if (sp_val1.length == 2 && sp_val2.length == 2)
14: {
15: val1_point = sp_val1[1].length;
16: val2_point = sp_val2[1].length;
17: more = Math.max(val1_point, val2_point);
18: }
19: else if (sp_val1.length > sp_val2.length)
20: {
21: more = sp_val1[1].length;
22: }
23: else
24: {
25: more = sp_val2[1].length;
26: }
27: var val1Int = parseFloat(val1) * Math.pow(10, more);
28: var val2Int = parseFloat(val2) * Math.pow(10, more);
29: var sub = val1Int - val2Int;
30: return sub / Math.pow(10, more);
31: }