java - 常量声明中的 P

标签 java

java.lang.Double中,有如下常量声明:

public static final double MAX_VALUE = 0x1.fffffffffffffP+1023;
public static final double MIN_NORMAL = 0x1.0p-1022;

P 是干什么用的?大小写的区别重要吗?

我知道 LDF 用于 Longs、Double s 和 Floats,但之前从未见过 P

最佳答案

P(或p)表示十六进制floating-point literal ,其中有效数字以十六进制指定。

使用 p 代替 e。您看到的 df 后缀与此正交:0x1.0p+2f0x1.0p+ 2d 是有效的文字(一个是 float 类型,另一个是 double 类型)。

乍一看,0x 前缀似乎足以识别十六进制浮点文字,那么为什么 Java 设计人员选择更改 e 中的字母> 到 p?这与 e 是有效的十六进制数字有关,因此保留它会导致解析歧义。考虑:

0x1e+2

这是一个十六进制 double 还是两个整数 0x1e2 之和?当我们将 e 改为 p 时,歧义就解决了:

0x1p+2

关于java - 常量声明中的 P,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603232/

相关文章:

java - HashTable 中的 ArrayList 是线程安全的

java - jqassistant - 定期扫描存储库并将其内容提供为服务器

java - "500 Error: Failed to establish a backside connection"- Bluemix Selenium 测试

java - request.getParameterValues在jsp页面中获取null

java - 如何从 doPost() 获取和使用 jsp 文件中的 java 对象?

java - 在 @AfterMethod 中的 TestNG 中,我如何知道测试结果?

Java - 如何从 MySQL 过程中获取 ReturnCode?

java - 确保具有特定注释的字段为 'private'

java - 如何从 HashMap 中的对象访问 ArrayList? java

java - NetBeans Gradle项目