【问题标题】:Converting Hex double/float to Decimal double/float in Java在 Java 中将十六进制双精度/浮点数转换为十进制双精度/浮点数
【发布时间】:2014-02-07 14:34:13
【问题描述】:

我搜索了相当数量,但没有关于转换十六进制字符串(这不是整数)的答案,例如 0x11.11 或 0x1p3 在 Java 中转换为十进制形式(浮点数或双精度数),而无需手动执行。有答案吗?

【问题讨论】:

  • 你是用这种方式将它们输入到源代码中,比如double d = 0x11.11;,还是你得到它们的格式是什么?你需要它们的格式是什么?
  • 对不起,我应该在 OP 中澄清我正在以字符串的形式读取十六进制值
  • 你试过Double.parseDouble(String)是否支持这种格式?
  • @JimGarrison 这篇文章借鉴了相同的概念,但我仍然不确定如何处理来自该帖子示例和阅读的十六进制形式的实际浮点值,例如 0x11.11 intBitsToFloat 文档

标签: java floating-point hex


【解决方案1】:

Double.valueOf() 支持从String 进行这种转换:

System.out.println(Double.valueOf("0x0.1p0"));
System.out.println(Double.valueOf("0x11.11p0"));
System.out.println(Double.valueOf("0x1p3"));

输出:

0.0625
17.06640625
8

另外值得一提的是 1.5 添加了对这些文字的支持:

double d = 0x1p3;

【讨论】:

  • 是的,我认为这可能是问题所在(即使0 也需要p),但我不想假设。很高兴我能帮上忙。
猜你喜欢
  • 2011-09-18
  • 1970-01-01
  • 2016-12-14
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2014-03-01
相关资源
最近更新 更多