1. java中float和double是多少位浮点数
float表示单精度浮点数在机内占4个字节,用32位二进制描述。
double表示双精度浮点数在机内占8个字节,用64位二进制描述。
浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。
指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.
知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是浮点数的数值范围。
对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)
2. Java初学float小数的问题
在计算机几内部,小数不是按照四舍五入的方法的。因为计算机只有0和1,没有4和5,所以不能四舍五入的。
不管是float还是double,在处理末位时都是直接丢弃的。比如一个小数,应该是用33位二进制码才能完全表示的,但是float只有32位,于是最后一位就被扔了,表现出来的效果有时是减一,有时是不变。
3. Java中的float精确多少位
精确到多少位这样不确切,确切地讲float能保存7位有效数字,比如说1234567是7位有效数字,而1.234567也是7位有效数字~~
4. java中float和double的取值范围是什么
float:4字节(32bit),IEEE 754. 取值范围:
[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38] 。
double: 8字节(64bit) ,IEEE 754. 取值范围:
[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
(4)javafloat几位小数点扩展阅读
基本数据类型的特点,位数,最大值和最小值。
1、
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
2、
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
3、
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
5. JAVA 中的Float类型不是7位有效数字吗
首先说一下:
范围是3.4E-38 ——3.4E+38,可提供7位有效数字。
上述这两个量都是近似值,各个编译器不太一样的。
下面我就将标准值是怎么定义的,和你说一下:
这个比较复杂,建议你找一下IEEE754标准看一下。
这个简单说一下吧:
在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。float有32bit,double有64bit。它们的构成包括符号位、指数位和尾数位。
这些位的构成如下:
种类-------符号位-------------指数位----------------尾数位----
float---第31位(占1bit)---第30-23位(占8bit)----第22-0位(占23bit)
double--第63位(占1bit)---第62-52位(占11bit)---第51-0位(占52bit)
取值范围主要看指数部分:
float的指数部分有8bit(2^8),由于是有符号型,所以得到对应的指数范围-128~128。
double的指数部分有11bit(2^11),由于是有符号型,所以得到对应的指数范围-1024~1024。
由于float的指数部分对应的指数范围为-128~128,所以取值范围为:
-2^128到2^128,约等于-3.4E38 — +3.4E38
精度(有效数字)主要看尾数位:
float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位
6. java中float和double输出结果到底是多少位
输出1位
:因为
float
本来就是单精度的!
输出1位正常!不过通常带有
12.2f
1.float
它最多只能保存
7位有效数字!2.两个float相乘结果为float
3.乘数中只要有一个数为double,结果也有double
4.实数在计算机是以浮点数的形式表示的。所以要看它的实际二进制的编码方式
7. 关于JAVA中浮点数据类型的问题,float跟double分别能表示多少位
浮点数的精度,指所有的有效数字的位数,例如0.123和12.3的有效数字都是三位。
表示范围则用指数的范围来说明,例如10^-37~ 10^38。
你用的什么版本的eclipse?
我用的也不算很新的版本,eclipse自己告警了。
Version: Juno Service Release 1
Build id: 20120920-0800
给出的解决方案有两个:讲常量强制转换为float,或者变量类型换成double。
直接用jdk 1.6编译,提示如下:
ThreadDemo.java:14: 可能损失精度
找到: double
需要: float
float f = 1234567890987654321.1234567890987654321;
^
1 错误
8. java 如何使的float保留2位或者多位小数
表明四舍五入,保留两位小数即float ft = 134.3435f; int scale = 2;//设置位数 int roundingMode = 4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等. BigDecimal bd = new BigDecimal((double)ft); bd = bd.setScale(scale,roundingMode); ft = bd.floatValue();方法2:importjava.text.DecimalFormat;Stringa=newDecimalFormat(###,###,###.##).format(100.12345);即float scale = 34.236323; DecimalFormat fnum = new DecimalFormat(##0.00); String dd=fnum.format(scale); System.out.println(dd); 方法3:最简单的方法 float b = (float)(Math.round(a*100))/100;(这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)
9. float和 double类型在java各是多少位啊
Java中的float是32位的,double是64位的。
float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:
1bit(符号位) 11bits(指数位) 52bits(尾数位)
于是,float的指数范围为-128~+127,而double的指数范围为-1024~+1023,并且指数位是按补码的形式来划分的。float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。