首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java语言中:float数据类型在内存中是怎么存储的?

============================================================================= java语言中,float类型数字在计算机中用4个字节来存储。遵循IEEE-754格式标准: 即:一个浮点数有2部分组成:底数m和指数e --------------------------------------- 底数m部分:使用二进制数来表示此浮点数的实际值。 指数e部分:占用8bit(1个字节)的二进制数,可表示数值范围为0-255。 --------------------------------------- 但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。 所以,float类型的指数可从-126到128。 --------------------------------------- 底数部分实际是占用24bit(3个字节)的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit。 --------------------------------------- 科学计数法。   格式: SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM     S表示浮点数正负;     E表示指数加上127后的值后得二进制数据;     M表示底数。   举例:     17.625在内存中的存储为:     首先要把17.625换算成二进制:10001.101 ---------------------------------------     整数部分:除以2,直到商为0,余数反转。(即:模2取余法)     17 / 2 = 8 --- 1     8 / 2 = 4 --- 0     4 / 2 = 2 --- 0     2 / 2 = 1 --- 0     1 / 2 = 0 --- 1     小数部分:乘以2,直到乘位为0,进位顺序取。(即:乘2取整法)     按如下算法进行:       1)首先给小数部分乘2,得到的数,如果小数点前为1;则计1,为0,则计0。       2)再对剩下的小数部分乘2,再计出1或0。       3)重复以上步骤,直至达到需要的精度。     0.625 x 2 = 1.3   --- 计为1     0.3 x 2 = 0.6       --- 计为0     0.6 x 2 = 1.2       --- 计为1     0.2 x 2 = 0.4       --- 计为0               ......(算到需要的精度为止)

01

java.math.BigDecimal保留两位小数[通俗易懂]

java保留两位小数问题: 一: 四舍五入(四舍五入形式保留两位小数,注意模式ROUND_HALF_UP) double f = 2345.2345; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 保留两位小数 二: double f = 2345.2345; java.text.DecimalFormat df =new java.text.DecimalFormat(“#.00”); df.format(f); 例:new java.text.DecimalFormat(“#.00”).format(2.1234567) #.00 表示两位小数 #.0000四位小数 以此类推… 三: double d = 2.1234567; String result = String .format(“%.2f”); %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型 四: NumberFormat ddf1=NumberFormat.getNumberInstance() ; void setMaximumFractionDigits(int digits) digits 显示的数字位数 为格式化对象设定小数点后的显示的最多位,显示的最后位是舍入的 import java.text.* ; import java.math.* ; class TT { public static void main(String args[]) { double x=2.1234567; NumberFormat ddf1=NumberFormat.getNumberInstance() ; ddf1.setMaximumFractionDigits(2); String s= ddf1.format(x) ; System.out.print(s); } } 二 、BigDecimal 的加减乘除使用 BigDecimal bignum1 = new BigDecimal(“10”); BigDecimal bignum2 = new BigDecimal(“5”); BigDecimal bignum3 = null; //加法 bignum3 = bignum1.add(bignum2); System.out.println(“和 是:” + bignum3);

02

十进制小数转换为二进制[通俗易懂]

十进制小数转换方法 十进制小数→→→→→二进制小数 方法:“乘2取整” 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分. 如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位 如:0.25的二进制 0.25*2=0.5 取整是0 0.5*2=1.0 取整是1 即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位) 0.8125的二进制 0.8125*2=1.625 取整是1 0.625*2=1.25 取整是1 0.25*2=0.5 取整是0 0.5*2=1.0 取整是1 即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位) 十进制小数→→→→→八进制小数 方法:“乘8取整” 0.71875)10 =(0.56)8 0.71875*8=5.75 取整5 0.75*8=6.0 取整6 即0.56 十进制小数→→→→→十六进制小数方法:“乘16取整”例如: (0.142578125)10=(0.248)16 0.142578125*16=2.28125 取整2 0.28125*16=4.5 取整4 0.5*16=8.0 取整8 即0.248 非十进制数之间的转换 (1)二进制数与八进制数之间的转换 转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如: (423。45)8=(100 010 011.100 101)2 (1001001.1101)2=(001 001 001.110 100)2=(111.64)8 (2)二进制与十六进制转换 转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如: (ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2 (101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16

03
领券