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

推荐订阅源

W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
F
Full Disclosure
博客园 - 【当耐特】
C
CERT Recently Published Vulnerability Notes
Engineering at Meta
Engineering at Meta
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Threatpost
I
Intezer
V2EX - 技术
V2EX - 技术
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Hacker News
The Hacker News
小众软件
小众软件
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
N
News | PayPal Newsroom
MyScale Blog
MyScale Blog
AI
AI
Vercel News
Vercel News
Spread Privacy
Spread Privacy
美团技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
V
Vulnerabilities – Threatpost
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
U
Unit 42
L
LangChain Blog
Recent Announcements
Recent Announcements

博客园 - 迷路中的路人甲

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