java的16进制表示浮点数问题

改天换地 2017-04-12 12:06:07
java的16进制表示浮点数问题 double d = 0x1.2P5; System.out.println(d); 为什么答案是36.0?
...全文
407 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlbertLiangzt 2017-04-14
  • 打赏
  • 举报
回复
引用 4 楼 AlbertLiangzt 的回复:
十六进制的0.1是十进制 的0.0625


AlbertLiangzt 2017-04-14
  • 打赏
  • 举报
回复
十六进制的0.1是十进制 的0.0625
改天换地 2017-04-14
  • 打赏
  • 举报
回复
引用 1 楼 AlbertLiangzt 的回复:
就我猜测 其中p应该是pow,次幂的意思 0x0.1p0 = 0.0625,即十六进制的0.1为十进制的0.0,25,0.0625 * 2^0 0x0.1p1 = 0.125,0.0625 * 2^1 。。。 0x0.1p5 = 2,0.0625 * 2^5 0x0.2p5 = 4,2 * 0.0625 * 2^5 0x1p0 = 1, 1 * 2^0 0x1p1 = 2, 1 * 2^1 。。。 0x1p5 = 32, 1 * 2^5 所以0x1.2p5 = 0x(1 +0.2 ) * 2^5 = 0x1p5 + 0x0.2p5 = 32+4=36
或者问他们为什么相等啊
改天换地 2017-04-14
  • 打赏
  • 举报
回复
引用 1 楼 AlbertLiangzt 的回复:
就我猜测 其中p应该是pow,次幂的意思 0x0.1p0 = 0.0625,即十六进制的0.1为十进制的0.0,25,0.0625 * 2^0 0x0.1p1 = 0.125,0.0625 * 2^1 。。。 0x0.1p5 = 2,0.0625 * 2^5 0x0.2p5 = 4,2 * 0.0625 * 2^5 0x1p0 = 1, 1 * 2^0 0x1p1 = 2, 1 * 2^1 。。。 0x1p5 = 32, 1 * 2^5 所以0x1.2p5 = 0x(1 +0.2 ) * 2^5 = 0x1p5 + 0x0.2p5 = 32+4=36
能不能再问下0x0.1P0怎么转化成0.0625的
AlbertLiangzt 2017-04-13
  • 打赏
  • 举报
回复
就我猜测 其中p应该是pow,次幂的意思 0x0.1p0 = 0.0625,即十六进制的0.1为十进制的0.0,25,0.0625 * 2^0 0x0.1p1 = 0.125,0.0625 * 2^1 。。。 0x0.1p5 = 2,0.0625 * 2^5 0x0.2p5 = 4,2 * 0.0625 * 2^5 0x1p0 = 1, 1 * 2^0 0x1p1 = 2, 1 * 2^1 。。。 0x1p5 = 32, 1 * 2^5 所以0x1.2p5 = 0x(1 +0.2 ) * 2^5 = 0x1p5 + 0x0.2p5 = 32+4=36

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧