在java.lang.Double,有以下常量声明:
public static final double MAX_VALUE = 0x1.fffffffffffffP+1023;
public static final double MIN_NORMAL = 0x1.0p-1022;
Run Code Online (Sandbox Code Playgroud)
有什么P用?区别重要吗?
我知道L,D并F用于Longs,Doubles和Floats,但从未见过P以前.
NPE*_*NPE 29
的P(或p)表示是十六进制浮点文字,其中所述有效数在十六进制指定.
将p被用来代替e.该d和f你已经看到后缀正交这样的:既0x1.0p+2f和0x1.0p+2d有效文本(一个是类型的float,另一种是类型double).
乍一看,似乎0x前缀足以识别十六进制浮点字面值,那么为什么选择Java设计者将字母更改e为p?这与e作为有效的十六进制数字有关,因此保持它会引起解析歧义.考虑:
0x1e+2
Run Code Online (Sandbox Code Playgroud)
这是十六进制double还是两个整数的总和,0x1e并且2?当我们改变e时p,歧义得到解决:
0x1p+2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7130 次 |
| 最近记录: |