首页 > 其他分享 >无法精确的浮点数

无法精确的浮点数

时间:2024-09-28 19:47:00浏览次数:2  
标签:计算机 二进制 浮点数 位数 精确 无法

老师给出的TestDouble.java,经过运行测试,发现两个浮点数相加得数竟然竟然不对0.05 + 0.01 = 0.060000000000000005,1.0 - 0.42 = 0.5800000000000001,4.015 * 100 = 401.49999999999994,不是不对,而是不精确.
这是时候想起自己大一写的代码,浮点数判等.一直都是做差绝对值在一个很小的范围就认为是相等.

int is_equal(double a, double b) {
return fabs(a - b) < EPSILON;
}
只知道要这么写,却不知道为什么.今天要彻底弄懂.
原来并不是浮点数运算不精确,而是从储存开始,浮点数就已经不"纯洁"了------浮点数无法被精确的存入计算机.这与计算机的储存方式有关,我们输入十进制的浮点数,存入计算机的时候会转化成二进制,而小数部分常常无法被二进制准确表示,就导致后续的计算也无法精确.
所以计算机是无法精确存入浮点数的.
查询的资料:
浮点数表示:计算机中的浮点数通常遵循IEEE 754标准,它将浮点数分为三部分:符号位、指数部分和尾数(或有效数字)。这种表示方法虽然可以表示很大的范围,但有限的比特位数意味着无法精确存储所有的实数。

有限精度:浮点数使用有限的位数来存储数值,实际能表示的数值的精度受到位数的限制。这意味着许多实数(尤其是十进制小数)不能以二进制的形式精确表示。例如,十进制数0.1在二进制中是一个无限重复的小数,无法精确存储。

舍入误差:由于浮点数只能存储有限位数,当计算结果超出其精度范围时,计算机将不得不进行舍入,从而引入了误差。这种误差在进行一系列数学运算时可能会积累,导致最终结果与理论值之间存在差异。

标签:计算机,二进制,浮点数,位数,精确,无法
From: https://www.cnblogs.com/lianhuagucheng/p/18438307

相关文章

  • 【已解决】arduino一直在进入界面无法打开问题
    问题概述:            启动Arduino时一直卡在启动界面已尝试方法:删除arduino所有文件,重新安装关闭防火墙以管理员身份打开解决方法:打开设置进入更新和安全,选择windows安全中心进入病毒和威胁防护,选择“病毒和威胁防护”设置下拉选择 添加或删除排除项......
  • 如何快速免费搭建自己的Docker私有镜像源来解决Docker无法拉取镜像的问题(搭建私有镜像
    文章目录......
  • 解决win10无法用独显玩游戏的问题
    首先要下载独显驱动。https://www.nvidia.cn/Download/index.aspx?lang=cn这时任务管理器里就可以看到独显占用率了。然后桌面右键打开nvidia控制面板,把要使用独显的游戏设置为使用独显(如果默认不使用独显的话)如果还不行,可能是还需要装上CPU的核显驱动(很奇怪吧?我也觉得)intel......
  • 解决linux下latex无法使用consolas的问题
    在网上找了好久都没有合适的解决方案TT。结合报错信息,发现其实/usr/local/texlive/2019中已经有inconsolata,但是编译时xelatex找的是/usr/share/texlive,里面有一些字体没有(我也不懂为什么官方要这样搞)。于是我们只需要把/usr/share下的相关文件夹替换成/usr/local/texlive/2019中......
  • Java中浮点数运算存在的精度问题以及解决方法
    观察以下一段代码,相信小朋友都可以一眼看出答案,但是计算机给出的答案是这样吗?publicclassTestDouble{publicstaticvoidmain(Stringargs[]){System.out.println("0.05+0.01="+(0.05+0.01));System.out.println("1.0-0.42="+(1.0-0.42));System.out.pr......
  • 若依框架上传图片到本地,部署到服务器无法访问解决方法
    1.在后端代码ruoyi-admin中的application.yaml中修改文件上传路径 如需上传到服务器,请修改成服务器的路径  2.maven打包成ruoyi-admin.jar的文件上传到服务器中3.如果你使用的是宝塔来部署项目,请在nginx配置中注释掉一下代码:#location~.*\.(gif|jpg|jpeg|png|......
  • 易优CMS设置了安全锁白名单无法登入的临时解决方法-eyoucms
    当你在异地出差或不在常用地区时,由于设置了安全锁白名单而无法登录系统,可以通过以下临时方法解决此问题:具体步骤创建临时文件创建一个名为 uneyousafe.txt 的空白记事本文件。上传文件将 uneyousafe.txt 文件上传到 data/conf/ 目录中。解除安全锁上传后,......
  • mysql服务器无法启动怎么办
    当MySQL服务器无法启动时,你可以按照以下步骤进行排查和修复:检查错误日志:查看MySQL安装目录下的错误日志文件(通常是 host_name.err 或者 mysql.err 文件),里面会包含MySQL启动失败的具体原因。对于Linux系统,还可以查看系统的syslog日志。确认端口是否被占用:使用命令......
  • eyoucms易优无法安装,提示当前数据库结构与官方不一致
    当您在安装易优EyouCMS时遇到“当前数据库结构与官方不一致”的提示,这意味着您的数据库结构与EyouCMS当前版本所期望的结构不符。这种情况通常发生在以下几种情况下:数据库版本落后:您可能之前安装了一个较低版本的EyouCMS,然后通过后台升级到了最新版本,但是没有备份数据库,直接进行......
  • 无法安装,提示当前数据库结构与官方不一致
    当您在安装易优EyouCMS时遇到“当前数据库结构与官方不一致”的提示,这通常意味着您的数据库表结构与EyouCMS要求的结构不匹配。以下是解决这个问题的步骤:1.备份现有数据库在进行任何操作之前,先备份现有的数据库,以防万一出现问题可以恢复。mysqldump-uusername-pdatabas......