科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java 5.0的五个特性3

Java 5.0的五个特性3

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  至今,毫无疑问你已经看过不止一篇网上文章列举了Java5.0的伟大的语言新特性:泛型,标注,枚举类型,自动装箱,可变参数, for/in循环,甚至静态引入。在此我将集中于你可能没有听说过的Java5.0的新API特性。

来源:IT专家网 2008年5月13日

关键字: 特性 Java 5 java

  • 评论
  • 分享微博
  • 分享邮件
 十六进制浮点数字面值

  我承诺谈论Java5.0的最晦涩的新语言特性。这就是:十六进制格式的浮点常量!这里是奇异的详情:一个十六进制符号的浮点常量以0X或者0x开头。随后的十六进制数字形成了数的基数。关键是这些数字可以包含一个小数点(一个十六进制小数点?)。在基数后面是指数,是必需的。十六进制浮点常量使用p或者P而不是e或者E来引入指数。(想一下“幂”来帮助记忆)。P或者P后面是指数,必须是一个十进制数,而不是十六进制数。而且这是个以二为根的指数,而不是以十为根。那就是,表示基数要乘以的2的幂。最后,整个常量可以跟随一个f或者F来表示一个浮点常量,或者一个d或者D表示一个双精度常量,就像一个十进制浮点数一样。

  下面是一些例子:

double x = 0XaP0;    // 10 * 2^0 = 10.0
  double y = 0XfP2D;   // 15 * 2^2 = 60.0
  float z  = 0Xf.aP1F; // (15 + 10/16ths) * 2^1 = 31.25f
  // 用十进制来打印
  System.out.printf("%f %f %f%n", x, y, z);
  // 用十六进制来打印
  System.out.printf("%a %a %a%n", x, y, z);

  为什么Sun要对语言做这些?5.0的发行说明说:

  为了允许特定浮点值实现精确及可预见的规范,十六进制符号可用于Float和Double的浮点字面值和字符串到浮点数的转换方法中。

  这点是合理的。十进制小数像0.1是不能精确地用浮点格式表示的,并且如果你真的需要确切知道在一个浮点或者双精度值中比特位是怎么设的,那么你真的想要一个十六进制字面值。例如,Float.MAX_VALUE的Javadoc指出最大的浮点值是0x1.fffffeP+127f。

  如果你知道并且喜欢IEEE-754浮点标准,那么十六进制浮点字段值或许是你喜欢的一个特性。我只是认为他们有趣。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章