第四次学习java

本文详细解释了Java中浮点数的十六进制表示方式及其转换过程,并深入探讨了Java语言规范下浮点类型字面量的十进制与十六进制表示限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于转义字符,发现换页符与退格符在myeclipse中完全是废的,没任何作用。


对于浮点数据类型的学习,有很大的收获

书上说表示浮点数的e或E前面必须有数,后面必须有整数

那么我就想:是不是e前面的数可以是十六进制或者八进制呢


测试如下

public class test1 {
static double f = 0x11e30;
public static void main(String[] args) {
System.out.println("double "+f);
}
}
发现打印出来了double 73264.0


原因:0x11e30中0x代表16进制数后边11e30就是16进制数的具体值
所以0x11e30 = 1 * 16^4 + 1* 16^3 + 14 * 16^2 + 3*16^1 + 0 * 16^0 = 73264
在16进制中 0-9就表示0-9, a 表示10, b表是11, c表示12, d表示13, e表示14, f表示15
这里的e不是表示10的几次方的意思,因为e代表10的几次的说法是在10进制数情况下才有效果的,其他进制数是没有这个方法的,前边的0x代表16进制数,所以这里的e代表的就是14而不是10的多少多少次方了

想用指数形式的16进制表示:
需要用2的幂的形式,符号不是e而是p或P.
0x11p30;  
相当于10进制:17*2^30.


public class test2 {
static double f = 011e3;
public static void main(String[] args) { 
System.out.println("double "+f); 
}
}

发现打印出来了double 11000.0

原因:

java 语言规范(jls)规定:
表示浮点类型数的字面量,只有10进制表示和16进制表示。(没有其他进制表示)。
在本例中,将011看作是10进制数了。



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值