Java 中float 、double的精度问题:float 、double取值范围是怎么样计算出来的?为什么int型也是占 4个字节,但取值范围是那么小的范围,但是float也是占4 个字节,取值范围为什么就是那么大的?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 04:20:03
Java 中float 、double的精度问题:float 、double取值范围是怎么样计算出来的?为什么int型也是占 4个字节,但取值范围是那么小的范围,但是float也是占4 个字节,取值范围为什么就是那么大的?

Java 中float 、double的精度问题:float 、double取值范围是怎么样计算出来的?为什么int型也是占 4个字节,但取值范围是那么小的范围,但是float也是占4 个字节,取值范围为什么就是那么大的?
Java 中float 、double的精度问题:float 、double取值范围是怎么样计算出来的?
为什么int型也是占 4个字节,但取值范围是那么小的范围,
但是float也是占4 个字节,取值范围为什么就是那么大的?

Java 中float 、double的精度问题:float 、double取值范围是怎么样计算出来的?为什么int型也是占 4个字节,但取值范围是那么小的范围,但是float也是占4 个字节,取值范围为什么就是那么大的?
float和double都是遵循IEEE754标准的,内存单元里都是划分为三部分的:符号位 阶码 尾数.
其中
float的符号位占一位,阶码为8位,尾数为23位,所以一共四个字节;double的符号位占一位,阶码为11位,尾数52位.符号位为0的话说明是
正的,为1的话说明是负的;阶码就是尾数所要乘以的2的次方数;尾数默认是去掉整数位的1的,也就是说加入尾数序列为01010101(后面还有很多),
那么其实它是1.01010101(后面还有很多).比如一个float类型的变量,其符号位为0,阶码化成十进制为3,尾数为01000000(后面都是0),那
么这个变量化为十进制的话就是1.25*(2^3)=10.
int类型占四个字节,但是它不是像float那样表示的,int除了符号位之外其他位都是表示数值的,没有表示阶码的,所以它的范围比float小很多.
下面是维基百科上的一点解释,
不清楚的话还是先看看计算机原理的书或者追问,

以下的变量定义语句中,合法的是( ).A.float $_*5= 3.4F; B.double a =Double.MAX_VALUE; C.byte b1以下的变量定义语句中,合法的是( ).A.float $_*5= 3.4F; B.double a =Double.MAX_VALUE;C.byte b1= 15678; D.int _abc_ = 3721L;java语言 Java 中float 、double的精度问题:float 、double取值范围是怎么样计算出来的?为什么int型也是占 4个字节,但取值范围是那么小的范围,但是float也是占4 个字节,取值范围为什么就是那么大的? sum += 1.0/(double) 在java中! c语言中double和float有什么用法上的区别 C语言中,表达式18/4*sqrt(4.0)/8的数据类型为什么?是INT,还是FLOAT,还是DOUBLE,是不是C语言中不可能有数据类型是FLOAT的式子,因为所有FLOAT运算时都转成了DOUBLE型的. java.lang.Math中 min(double a,double b) 提问public static double或者float min(double a,double b){// this check for NaN,from JLS 15.21.1,saves a method callif (a = a)return a;// no need to check if b is NaN; < will work correctly// recall that -0 是不是C语言中不可能有数据类型是FLOAT的式子,因为所有FLOAT运算时都转成了DOUBLE型的. JAVA编程问题 定义一个泛型类Point,它包含横坐标x和纵坐标y两个变量,类型均为T该类具有两个参数的构造方法、x和y的设置器与访问器、输出方法.在main()函数中分别传入Double、Float、Integer类型 JAVA中常见的数据类型有double ,int ,float 有food 这种类型吗,我看到一个语句不太明白public void eat(Food food)这句中的(Food food)是什么意思啊.我到经常看到public void eat(int a)这句话我能看懂,怎么就突 C语言中,表达式18/4*sqrt(4.0)/8的数据类型是是DOUBLE,是因为所有FLOAT运算时都转成了DOUBLE,还是因为sqrt返回的是double是不是C语言中不可能有数据类型是FLOAT的式子,因为所有FLOAT运算时都转成了DOUBL java中r=Double.valueOf(str).doubleValue();是什么意思谢谢 java中两个float数相除,应该是整数却成了小数比如float c = 1.8;float d = 0.3;c / d 得到的是5.9999995,如何避免这种情况的发生得到6? java、c 2.下列声明哪个是错误的()A int i = 10; B float f = 1.1;C double d = 34.4; D long m = 4990; 关于java中 随机产生的问题 这段代码中int random = (int)(Math.random()*10); 为什么要 *10 import java.util.*;/*** GuessMachine.java* */public class GuessMachine {String name ;double price;/*** 初始化商品信息*/public void initia java中有些句子如int i=8 ,j=8,I=0;int a=5,b=6;float f=1.0f;double d=2.5d;int m=i%j;f=i/f;I=++i+j++;标题中的int m=i%j f=i/f;又是什么意思?Syestem.out.println(I=+I);Syestem.out.println(f=+f);口号里面的f=是什么意 double和float的取值在小数和整数部分都差多少?就是说float的小数到多少位,整数到多少,double是多少. C语言中,double型数和float型数,的计算时间,分别大约是int型的多少倍啊(据说double是int的几百倍呢) 以下的变量定义语句中,合法的是 :A.float $_*5= 3.4F; B.byte b1= 15678; C.int _abc_ = 3721L;以下的变量定义语句中,合法的是 :A.float $_*5= 3.4F;B.byte b1= 15678;C.int _abc_ = 3721L;D.double a =Double.MAX_VALUE;