锁定老帖子 主题:神一样的代码
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-02
wxwdt 写道 我在myeclipse中运行没有死掉呀!
机器不一样,jdk的版本不一样的原因都有可能 我刚试过jdk1.6.0_10 和jrockit-jdk1.6.0_29-R28.2.2-4.1.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"); 否则在第一步的时候已经失去精确度了 |
|
返回顶楼 | |
发表时间:2012-03-02
iminto 写道 LZ是初中生吧?
难道你不知道任何编程语言中,浮点数都不可靠这个道理么? 不论是JAVA,还是C,还是XXXSCRIPT 所以要通过BigDecimal...... |
|
返回顶楼 | |
发表时间:2012-03-02
在netbeans下,我把代码复制到新建的类中,点了个格式化代码,netbeans死了...LZ你害人不浅啊...
|
|
返回顶楼 | |
发表时间: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编译卡死,确实神奇,求解! |
|
返回顶楼 | |
发表时间:2012-03-02
Netbeans编译不过去,不過沒死。
|
|
返回顶楼 | |
发表时间:2012-03-02
我这里 保存就会死
|
|
返回顶楼 | |
发表时间:2012-03-02
那是你設置了保存时自动编译。
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2012-03-02
kidding87 写道 楼上那些人好像挺会望文生义,楼主说的应该是这段代码会造成编译器死掉
不是你们说的准确不准确 Tests first. 装逼说英文 |
|
返回顶楼 | |