惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
J
Java Code Geeks
M
MIT News - Artificial intelligence
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
G
Google Developers Blog
Engineering at Meta
Engineering at Meta
量子位
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
Recent Announcements
Recent Announcements
腾讯CDC
I
InfoQ
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
爱范儿
爱范儿

博客园 - 迷路中的路人甲

sqlserver 创建 aspstate的方法 双网卡只有一个能ping通的解决办法 yum 快速安装 Rabbitmq for CentOS6 DataTable 2 Sql Table 存储过程提示临时表字段不存在的解决办法--直接修改临时表的名称,用唯一值作为名称 强制删除TFS的签出文件办法 sqlserver 2005 查找对象引用或者依赖的存储过程。 doubanclaim7fc6594541441a59 Excel 导入数据库的问题 C# 执行存储过程返回小数的输出值的设置方法 IE 无法显示JPG格式图片 Jquery选择器 记录 - 迷路中的路人甲 - 博客园 TED 中文视频收集 Jquery 验证插件formValidator 一点问题。 Select在IE7中的一个bug,多个Select互相重叠的问题 Google wave 发送中..... 这是什么样子的天气呀。 Office 2010 Beta 安装成功 msn9强制更新(版本:14.0.8089.726)后的 2003下的解决办法 。
js运算BUG
迷路中的路人甲 · 2011-06-23 · via 博客园 - 迷路中的路人甲

2011-06-23 09:35  迷路中的路人甲  阅读(369)  评论()    收藏  举报

 1     /*JS浮点计算BUG屏蔽终极解决办法*/  
 2       
 3         function accDiv(arg1, arg2) {  
 4       
 5             var t1 = 0, t2 = 0, r1, r2;  
 6       
 7             try { t1 = arg1.toString().split(".")[1].length } catch (e) { }  
 8       
 9             try { t2 = arg2.toString().split(".")[1].length } catch (e) { }  
10       
11             with (Math) {  
12       
13                 r1 = Number(arg1.toString().replace("."""))  
14       
15                 r2 = Number(arg2.toString().replace("."""))  
16       
17                 return (r1 / r2) * pow(10, t2 - t1);  
18       
19             }  
20       
21         }  
22       
23       
24       
25         //给Number类型增加一个div方法,调用起来更加方便。  
26       
27         Number.prototype.div = function(arg) {  
28       
29             return accDiv(this, arg);  
30       
31         }  
32       
33       
34       
35       
36         function accMul(arg1, arg2) {  
37       
38             var m = 0, s1 = arg1.toString(), s2 = arg2.toString();  
39       
40             try { m += s1.split(".")[1].length } catch (e) { }  
41       
42             try { m += s2.split(".")[1].length } catch (e) { }  
43       
44             return Number(s1.replace(".""")) * Number(s2.replace(".""")) / Math.pow(10, m)  
45       
46         }  
47       
48         Number.prototype.mul = function(arg) {  
49       
50             return accMul(arg, this);  
51       
52         }  
53       
54         function accAdd(arg1, arg2) {  
55       
56             var r1, r2, m, c;  
57       
58             try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }  
59       
60             try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }  
61       
62             c = Math.abs(r1 - r2);  
63             m = Math.pow(10, Math.max(r1, r2))  
64             if (c > 0) {  
65                 var cm = Math.pow(10, c);  
66                 if (r1 > r2) {  
67                     arg1 = Number(arg1.toString().replace("."""));  
68                     arg2 = Number(arg2.toString().replace(".""")) * cm;  
69                 }  
70                 else {  
71                     arg1 = Number(arg1.toString().replace(".""")) * cm;  
72                     arg2 = Number(arg2.toString().replace("."""));  
73                 }  
74             }  
75             else {  
76                 arg1 = Number(arg1.toString().replace("."""));  
77                 arg2 = Number(arg2.toString().replace("."""));  
78             }  
79             return (arg1 + arg2) / m  
80       
81         }  
82       
83         Number.prototype.add = function(arg) {  
84       
85             return accAdd(arg, this);  
86       
87         } 

From:http://blog.csdn.net/l3917055/archive/2010/09/04/5863215.aspx