首页 >电脑教程 >电脑知识 >深入解析JAVA中double类型的浮点运算

深入解析JAVA中double类型的浮点运算

王林
王林转载
2024-01-15 09:57:221295浏览

深入解析JAVA中double类型的浮点运算

double f=0.0005;

double i=3;

double d=f*i;

double f1=0.0005;

double j=3;

double d1=f1*j;

if(d==d1){

System.out.println("aaa");

}这样就相当,java中基本数据类型称为自动变量,自动变量存的是字面值,由于字面值的数据大小可知,生存期可知,出于速度的原因就把它们放在栈中,栈中的数据可以共享.如int a=3 int b=3 编译器先处理int a=3;首先它会在栈中创建一个变量为a的引用,然后在找字面值等于3的地址,没有 就开辟一个存放3这个字面值的地址,接着处理int b=3;在创建完变量为b的应用后,查找有没有3这个字面值的地址,现在有了,则指向3的地址,这时用==(判断地址是否相同时)就会为True

cpu浮点运算是什么

1、浮点性能,以前称之为协处理器,486以前并不包含在CPU中(8086~8087,80286~80287,80386~80387=80386DX,80486SX~80487=80486DX,586=586+587……)浮点运算是高精度的运算方式,主要运用在科学和多媒体中。

2、可以理解为小数点可移动的运算方式。目前速度AMD>>Inter

3、浮点数是指带有有限位小数的有理数,如-10.8、0.00、25.01 等。

4、 浮点运算,得到的结果是一个浮点数,计算结果中的小数部分将保留下来。

例如:用浮点运算时,100.0÷3.0=33.33333333。

5、例如一颗子弹打到墙上,有一片土掉落,浮点运算强的,可能还能够把掉下来的灰尘也表现出来。

望采纳

C语言中的单精度和双精度浮点型的区别!3 14是哪种?3 14159呢

3.14是单精度,3.14159是双精度。

两者区别如下:

一、指代不同

1、单精度:是指计算机表达实数近似值的一种方式。

2、双精度:此数据类型与单精度数据类型(float)相似,但精确度比float高。

深入解析JAVA中double类型的浮点运算

二、占用空间不同

1、单精度:范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38 。

2、双精度:双精度型占8 个字节(64位)内存空间,其数值范围为-1.79769313486232E308 到1.79769313486232E308。

三、特点不同

1、单精度:数值比以上值小的时候,将会由于尾数的有效位数减少而逐步丧失精度(IEEE 754的规定),或者有的系统则直接采用0值来简化处理过程。

2、双精度:编译时所占的内存空间依不同的编译器而有所不同,是double float数据类型,C/C++中表示实型变量的一种变量类型。

参考资料来源:百科单精度

参考资料来源:百科-双精度浮点型

计算机中浮点怎么表示

浮点由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。

浮点数a由两个数m和e来表示:a = m * b^e(b的e次方)。

在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。

有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。

我们可以用这3种方法来表示浮点数:

1、BCD 代码。

2、 阶码尾数表示法。

3、 我们可以把第二种方法改造一下,就能得到一种更好的方法。先把一个浮点数的小数点移到最后,用N=M*RC 表示,R=10,然后再把M 转换为二进制B,再用C 做阶码,B 做尾数用阶码尾数法表示。

例如: 3.14159=314159*10^(-5)。

314159 用二进制表示为1001100101100101111。

用这种方法不仅可以精确表示浮点数的值,还可以充分的利用存储空间。

深入解析JAVA中double类型的浮点运算

扩展资料:

浮点运算单元(FPU)

浮点数运算和整数运算不同,所以运算单元当然不同。早期的浮点处理器是作为 CPU 的「外置协处理器」出现的。x87 FPU 特指与 x86 处理器配套的浮点协处理器架构。

有以下要点:

1、浮点寄存器采用栈结构。

深度为 8,宽度为 80 位,即 8 个 80 位的寄存器。

名称为 ST(0) ~ ST(7),栈顶为 ST(0),编号分别为 0 ~ 7。

2、所有浮点运算都按 80 位拓展精度进行。

3、浮点数在浮点寄存器和内存之间传送。

(1)float、double、long double 型的变量在内存中分别用 IEEE 754 单精度、双精度、扩展精度表示,分别占 32 位,64 位,96 位(前 16 位无效)。

(2)float、double、long double 类型变量在浮点寄存器中都用 80 位拓展精度表示。

(3)从浮点寄存器到内存:80 位拓展精度格式转换为 32 位或者 64 位。

(4)从内存到浮点寄存器:32 位或者 64 位转换为 80 位扩展精度格式。

参考资料来源:百科-浮点

百科-浮点表示法

以上是深入解析JAVA中double类型的浮点运算的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:docexcel.net。如有侵权,请联系admin@php.cn删除