System.out.println(Double.toHexString(-1d));收益率
-0x1.0p0Javadoc将语法解释为:
如果m是具有规范化表示的双值,则使用子字符串来表示意义字段和指数字段。意义由字符“0x1”表示。后跟小写的十六进制表示其馀的意义和分数。除非所有数字为零,否则十六进制表示中的尾随零将被移除,在这种情况下使用单个零。接下来,指数用"p“表示,后面跟着无偏指数的十进制字符串,就像调用指数值上的Integer.toString一样。
这是我第一次看到这些“-0x1”。符号。它是某种行业标准,还是Java的创新?
发布于 2014-07-17 14:27:51
它不仅是java,在C中看起来也是这样,这个页面解释了一些:http://www.exploringbinary.com/hexadecimal-floating-point-constants/
因为十六进制代表的是一个双,它是用科学符号表示的,所以你看到的是1.0到0的幂。问题是,toHexString方法首先查看二进制字符串,并在“.”之后转换任何部分。敬妖术。这意味着句点之前的数字将始终是1,因此javadoc将"0x1“作为表示数字为十六进制的符号。“-”只是说它是否定的,它不是符号的一部分。
https://stackoverflow.com/questions/24805866
复制相似问题