【Java se】为什么大部分小数在计算机中是不精确的

news/2024/11/13 4:14:04/

目录

一、什么是小数

二、浮点数在计算机中的转换规则

(1)整数部分转换步骤

(2) 小数部分转换步骤

三、使用代码说明

四、手动转换小数


一、什么是小数

        在计算机中,也称小数为浮点数,因为在使用科学计数法时,数字的小数点是可以“浮动”的。

        在Java中,关于浮点数有两种数据类型:

FloatDouble
含义单精度浮点数双精度浮点数
Java中的默认值不是默认浮点数类型是默认浮点数类型
Java中所占字节数4字节8字节
最大值

3.4E38

1.79E308

二、浮点数在计算机中的转换规则

        数字在计算机中是采用二进制存储的,在将小数存入计算机中时,要将十进制转为二进制,最后呈现给我们的是二进制在重新转换为十进制的结果。而在十进制转换为二进制的过程中,极易出现无限循环的情况,因此小数将变得不再精确。计算机最终会取一个无限接近结果的小数作为结果。

        十进制数转换为二进制数时,需要对整数部分与小数部分分别进行转换。

(1)整数部分转换步骤

        1.使用十进制的值除以2,得到两个部分,商和余数;

        2.商继续除以2,直到商为0为止;

        3.余数倒着看,就是二进制的值。

(2) 小数部分转换步骤

        1.整数部分转整数部分,小数部分转小数部分;

        2.把十进制的小数乘以2:

                (1).结果如果大于1,转换后的小数后面记1;

                (2).结果如果小于1,转换后的小数后面记0。

        3.直到结果为1.0为止。

三、使用代码说明

public class Demo01 {public static void main(String[] args) {double x = 10 - 9.9;double y = 1.0 - 9.0 / 10;//观察x和y是否相等:System.out.println(x);System.out.println(y);//判断x和y是否相等System.out.println(x == y);System.out.println(Math.abs(x - y) < 0.000001); //Math.abs()取绝对值}
}

        运行结果:

         我们发现,在日常计算中,x与y的值应该是相等的,但是使用浮点数进行除法运算后,就已经将值变得不精确了,因此,两个算式的最终结果不一致,并且相差很小。

四、手动转换小数

        将十进制数0.6转换为二进制数

        我们发现,这里出现了循环,因此浮点数是不精确的。

 


http://www.ppmy.cn/news/258353.html

相关文章

常见的USB VID

常见的USB VID&#xff1a;&#xff08;遇到再更新&#xff09; 03f0 Hewlett-Packard040a Kodak Co.04b8 Seiko Epson Corp.0eef D-WAV Scientific Co., Ltd1234 附所有VID&#xff1a;&#xff08;来自http://www.linux-usb.org/usb.ids&#xff09; ## List of USB ID…

【京东电商网站主界面仿写——HTML第九部分 HTML部分展示结束】

由于这个项目整体的代码较长,所以分成几个部分给大家展示。 比较完整的效果在这里~~【京东网站主界面仿写——使用Html5+CSS3+JavaScript等实现(附源代码和效果),挺炫的喔~~~】 这里先展示第一部分,关于HTML主页界面代码。 这里是主界面显示的第3701行到第4196行代码(至…

python evaluate函数_python 内联函数

python的一些小函数很能提高效率,平时在工作中经常忽视这些内容,而使用很原始粗暴的方法写代码;写了一段时间以后,发现自己的提高很少,要写个小脚本也要纠结半天,跟那些大拿们相差太大;所以要检讨自己,看看自己可以从那方面提高自己的技术能力; 今天首先学习下python的…

通过单反wifi同步照片到Android手机——使用Airnef Python脚本

前言 本人使用的是尼康D750&#xff0c;自带wifi功能&#xff0c;奈何配套的Android App太难用了&#xff0c;至于怎么难用&#xff0c;我这里就不细说了&#xff0c;用过的都懂。总不能白瞎了wifi功能吧。找了一阵子发现了两个第三方通过逆向工程制作的工具。一个是qDslrDash…

A-M进程列表

来源:不详 可惜只找到A~M的&#xff0c;谁有跟贴贴全了它。感觉很有用。计算机操作系统进程程序清单&#xff08;A~M&#xff09;0-9  3CDMINIC.exe → 3Com DMI Agent (DMI Desktop Management Interface). 3Com网络设备检测程序&#xff0c;完全安装3Com驱动后出现  …

Linux下面安装jdk和tomcat

1、jdk的安装 1、上传jdk到 opt目录下面 2、解压jdk tar -xvf jdk-8u281-linux-x64.tar.gz3、一般把jdk放到/usr/local &#xff08;软件的安装都是放到usr下面&#xff09; mv jdk1.8.0_281 /usr/local/4、配置环境变量 找到 /etc/profile 进行编辑修改 export JAVA_HOM…

Nikon部分产品限制产量并涨价

先来看看要停产的部分&#xff1a; N家摄友注意了&#xff0c;尼康下列产品将停产或已停产 Tuesday, January 27, 2009 Discontinued Toys Almost everyone emailed us with a shock to know the fact Nikon discontinued many lenses, cameras, flashes, and accessories in p…

小张学算法之音视频算法:2.jpeg图像压缩算法

接着上节视频压缩算法&#xff0c;今天来看看静态图像的压缩&#xff0c;相比视频压缩&#xff0c;图片压缩就太简单啦&#xff0c;let‘s go&#xff01;&#xff01; jepg文件二进制格式 jpeg二进制文件分块表 分块标识值涵义SOIff d8文件开始APP0ff e0定义交换格式和图像…