JAVA中关于float类型的疑问。
首先存放都是二进制,第一步你已经做好了,然后位数的23位是从小数点右边开始算起。不满23位补零,举个例子
0.2356的内存存储格式
将0.2356化为二进制后大约是0.00111100010100000100100000。
将小数点右移三位得到1.11100010100000100100000。
从小数点右边数出二十三位有效数字,即11100010100000100100000放入第22到第0位。
由于0.2356是正的,所以在第31位放入“0”。
由于我们把小数点右移了,所以在第30位放入“0”。
因为小数点被右移了3位,所以将3化为二进制,在左边补“0”补足七位,得到0000011,各位取反,得到1111100,放入第29到第23位。
最后表示0.2356为:0 0 1111100 11100010100000100100000
java编程里面int和float的问题。float不是只能用于小数点吗,int是整数。
float可以保存单精度浮点数,但也可以保存整数。
float的数值范围:3.402823e+38 ~ 1.401298e-45
byteshortintlongfloatdouble,从左往右,数值范围越大,右边的基本数据类型可以表示左边的。
这里用float保存97,可能是因为变量名是money吧,一般钱都是有小数的。
其实一般金融保存金额,都是用BigDecimal,精度高,且数据库读写也方便。
在java中float类型在内存中具体怎样存放
根据IEEE754浮点数表示标准,一个float变量在存储中由三部分组成,分别是:
符号位:1位(31),表示float的正负,0为正,1为负
幂指数:8位(23-30),表示2进制权的幂次
有效位:23位(0-22),表示有效数字
在float的存储中,有4个特殊的存储值,分别是:
0x7f800000:正无穷大,Float.intBitsToFloat()打印显示为infinity
0xff800000:负无穷大,打印显示为-infinity
0x00000000:正零,打印显示为0.0
0x80000000:负零,打印显示为-0.0
java中float是什么意思?
float表示单精度浮点数在机内占4个字节,用32位二进制描述。
浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。
指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 — float.
java中float类型变量取值范围
copy了一段话,是讲java中float类型实现的…希望有帮助
float占用4个字节,和int是一样,也就是32bit.
第1个bit表示符号,0表示正数,1表示负数,这个很好理解,不用多管.
第2-9个bit表示指数,一共8为(可以表示0-255),这里的底数是2,为了同时表示正数和负数,这里要减去127的偏移量.这样的话范围就是(-127到128),另外全0和全1作为特殊处理,所以直接表示-126到127.
剩下的23位表示小数部分,这里23位表示了24位的数字,因为有一个默认的前导1(只有二进制才有这个特性).