论坛首页 Java企业应用论坛

神一样的代码

浏览 22191 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2012-03-02  
wxwdt 写道
我在myeclipse中运行没有死掉呀!

机器不一样,jdk的版本不一样的原因都有可能
我刚试过jdk1.6.0_10 和jrockit-jdk1.6.0_29-R28.2.2-4.1.0
这两个版本,结果编译的时候,机器都死掉了。。
0 请登录后投票
   发表时间:2012-03-02  
zonghengmodao 写道
如果需要精确的计算,请使用 BigDecimal 类。
public static void main(String[] args) {
		double d = 2.2250738585072012e-308;
		BigDecimal bd = new BigDecimal(d);
		System.out.println(bd);

	}

需要修改为
BigDecimal b = new BigDecimal("2.2250738585072012e-308");

否则在第一步的时候已经失去精确度了
0 请登录后投票
   发表时间:2012-03-02  
iminto 写道
LZ是初中生吧?

难道你不知道任何编程语言中,浮点数都不可靠这个道理么?
不论是JAVA,还是C,还是XXXSCRIPT

所以要通过BigDecimal......
0 请登录后投票
   发表时间:2012-03-02  
在netbeans下,我把代码复制到新建的类中,点了个格式化代码,netbeans死了...LZ你害人不浅啊...
0 请登录后投票
   发表时间:2012-03-02  
rockethj8 写道
public  static void main(String[] args){ 
                double d = 2.2250738585072012e-308; 
                System.out.println("d: "+d); 
        }


324及以上就会报错:
Test2.java:5: 浮点数过小
        double d = 2.2250738585072012e-324;
                   ^
324以下除了308都能编译,就只有308编译卡死,确实神奇,求解!
0 请登录后投票
   发表时间:2012-03-02  
Netbeans编译不过去,不過沒死。
0 请登录后投票
   发表时间:2012-03-02  
我这里 保存就会死
0 请登录后投票
   发表时间:2012-03-02  
那是你設置了保存时自动编译。
0 请登录后投票
   发表时间:2012-03-02   最后修改:2012-03-02
这不是去年hotspot jdk爆出的一个bug么。。。ITeye新闻还出过,也已经有人发过贴了,还拿来炒现饭。。。
在非hotspot jdk中不会有问题的,以及新版本的jdk中也不会有这问题了


该漏洞源于二进制下一些浮点数的显示问题,当Java应用程序的处理数值为2.2250738585072012e-308时,该漏洞可能引起用户遭到拒绝服务的攻击。Oracle于2011年5月修复了该漏洞


http://www.iteye.com/topic/1032789
2 请登录后投票
   发表时间:2012-03-02  
kidding87 写道
楼上那些人好像挺会望文生义,楼主说的应该是这段代码会造成编译器死掉
不是你们说的准确不准确
Tests first.



装逼说英文
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics