首页 > 其他分享 >计算机在计算小数时会出错的原因

计算机在计算小数时会出错的原因

时间:2024-02-04 13:13:55浏览次数:26  
标签:计算机 浮点数 出错 计算 时会 十进制 小数

一:计算机在计算小数时可能会出现错误,原因有以下几点:
1.采用浮点数来处理小数,会存在计算出错的可能性,无论是使用单精度浮点数还是双精度浮点数1。
2.有些十进制的小数无法正确地转换成二进制,因此无法在计算机中准确表示 23。
3.计算机只能用有限的状态去和无限的需要表现的数去一一对应,这可能会导致误差的出现4。
所以尽管计算机在计算小数时可能会出现错误,但通常这些错误是在可接受的误差范围内的。在使用计算机进行小数计算时,建议使用可靠的软件和算法,并对计算结果进行仔细的验证和检查

二:long time after 约翰·冯·诺依曼发明了计算机。计算机内部的所有信息都是以二进制数的形式来处理的,而有一些十进制的小数无法转换成二进制数。举个栗子:0.1。十进制数0.1转换成二进制后,会变成0.00011001100……(1100循环)这样的循环小数。这其实和我们无法用十进制数来表示1/3是一样的道理。所以计算机是无法处理无限循环的小数的。
计算机计算出错的原因之一是,采用浮点数来处理小数(另外,也有因“位溢出”而造成计算错误的情况)。作为程序的数据类型,不管是使用单精度浮点数还是双精度浮点数,都存在计算出错的可能性。

三:那么我们怎么处理这种情况呢?
1、如果程序对数据的精度要求不高的情况下,完全可以忽略这个问题
2、还可以将小数转换成整数来计算,然后再除以响应的倍数即可
3、采用BCD方法

标签:计算机,浮点数,出错,计算,时会,十进制,小数
From: https://www.cnblogs.com/SF90/p/18005992

相关文章

  • 金蝶云星空审核使用了基础资料的属性字段报错:表达式计算出错
    ##报错内容表达式计算出错:F_XXXX_MaterialId.FIsSNManage==trueandF_XXXX_ProductLibraryId==0(基础资料字段F_XXXX_MaterialId没有定义FIsSNManage字段的引用,请修正公式或在此字段中添加其引用。)条件表达式结果转换失败:F_XXXX_MaterialId.FIsSNManage==trueand......
  • webrtc终极版(一)5分钟搭建多人实时会议系统webrtc
    webrtc终极版(一),支持https,在线部署【不是本地demo】,采用RTCMultiConnection官方demo,5分钟即可搭建成功@目录webrtc终极版(一),支持https,在线部署【不是本地demo】,采用RTCMultiConnection官方demo,5分钟即可搭建成功前言一、webrtc是什么?二、搭建demo步骤1.代码内容2.运行效果总结前......
  • c++结构体数组sort排序出错?(关于sort排序comp比较器的严格弱排序性质)
    在sort函数比较的时候,它会严格弱排序,比较a是否>=b,然后两个对象会进行交换,重新比较一遍,相当于这次比较的是b是否>=aa>=b?满足:trueb<=a?满足:true这样就出现了一个冲突,不管是a>=b还是b>=a都会返回true的情况,我们都知道sort中只要comp返回true,两个元素就会交换一次......
  • npm编译vue出错:Error code CERT_HAS_EXPIRED
    [Error]Theerrormessageisabouttheregistryhttps://npm.sap.com/youused.npmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIREDnpmERR!requesttohttps://npm.sap.com/@sap%2fcdsfailed,reason:certificatehasexpired[Solution]runcommand......
  • 保留小数后三位
    今日份的学习代码。经过前几天的学习,对于C语言有了一些认识,为了巩固练习,就在牛客网中开始了自己的编代码练习。首先是有一道一直在出错的题目。而我一开始写的代码,是这样的这个代码无论怎么运行都会报错,后来我就对代码就行了分析。首先前两行加上大括号其实都没有问题,问题还是主要......
  • 计算机进行小数运算出错
    一、计算机小数运算错误示例:将0.1累加100次也得不到10下图是将0.1累加100次,然后将结果输出到显示器上的C语言程序:二、二进制表示小数小数点前面部分的转换只需将各数位数值和位权相乘,然后再将相乘的结果相加即可;小数点后面的部分将各数位的数值和位权相乘的结果相加即可。(位权......
  • [转]使用 mathjs 解决 js 小数精度问题
    原文地址:使用mathjs解决js小数精度问题-公瑾当年-博客园很经典的例子是0.1+0.2!=0.3(实际等于0.30000000000000004)不等的原因机器中采用二进制存储数据,比如,35会被存储为:00100011(2^5+2^1+2^0)。0.375会被存储为:0.011(1/2^2+1/2^3=1/4+1/8=0.375)而对于像......
  • MySQL中,当update修改数据与原数据相同时会再次执行吗?
    一、背景本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗?二、测试环境MySQL5.7.25Centos7.4三、binlog_format为ROW1、参数 2、测试步骤session1session2session13、总结在binlog_format=row和binlog_row_image......
  • cmd&powershell有时会卡住(假死)的解决办法
    windows10cmd命令提示符/批处理/终端快速编辑模式bug程序运行被阻塞顶部标题栏提示选择需要回车或空格才能继续执行的解决方案... 问题描述:   开启命令行窗口后,按了一下键盘恢复,一下刷新一大片,这个问题就是像是假死一样,也不报错,这是怎么回事呢原因分析:cmd......
  • 配置AlwaysON出错
     在其中一个集群节点的SQLServer中验证各节点的投票数,在其中一个集群节点的SQLServer上执行使用下面SQL语句SELECT*FROMsys.dm_hadr_cluster_members;SELECT*FROMSYS.[dm_hadr_cluster] 7、再次确保各节点已经关闭防火墙,如果防火墙没有关闭,那么在创建可用性组的时候会......