这是根据规范的Java双解析行为吗?

 us0569398 发布于 2023-01-14 15:18
  • php
  • java.lang.Double.parseValue方法以不一致的方式处理奇怪的双打表示.

    如果你写了一个非常大的数字,那么它超出了double范围,但是然后附加一个大的负指数使它回到范围内,你最终在范围内(这里用Scala的REPL说明):

    scala>
    java.lang.Double.parseDouble("10000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000001e-400")
    res25: Double = 1.0E-21
    

    另一方面,如果你写一个非常小的数字,这么小,它超出了double范围,但是然后使用一个大的正指数将它带回范围内,它只有在指数本身不是太大时才有效:

    scala> 
    java.lang.Double.parseDouble("0.000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000001e400")
    res26: Double = Infinity
    
    scala>
    java.lang.Double.parseDouble("0.000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000001e200")
    res27: Double = 1.0E-179
    

    这只是一个错误,或者某个地方是否存在允许这种行为的规范,或者规范允许所有这些都失败了,当得到正确的结果时,应该感谢一个人的祝福?(如果它是一个错误,它已被修复?)

    (旁白:我正在编写自定义的字符串到双重代码,并且会针对棘手案例推迟Java默认实现,但此测试用例失败.)

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有