浮点数精度问题(详细)

文章目录

  • 1.什么是浮点数
  • 2. 二进制与十进制的转换
    • 2.1 二进制与十进制的相互转换(方法介绍,思维理解)
    • 2.2 在线转换工具
  • 3.浮点数的 IEEE754 表示
  • 4.C# 浮点型float、double 、decimal 比较
  • 5.解决运算精度问题
    • 5.1 浮点数预算精度问题
    • 5.2 解决方案
      • 5.2.1 放大倍数计算
      • 5.2.2 ToString()
      • 5.2.3 Math.Round()

1.什么是浮点数

因为资源的限制,数学中的小数无法直接在计算机中准确表示。为了更好地表示它,计算机科学家们发明了浮点数,这是对小数的近似表示。
也就是说浮点数是相对于定点数而言的,表示小数点位置是浮动的。比如 7.5 × 10、0.75 × 10² 等表示法,值一样,但小数点位置不一样。
具体来说,浮点数是指用符号、尾数、基数和指数这四部分来表示的小数。
在这里插入图片描述

2. 二进制与十进制的转换

2.1 二进制与十进制的相互转换(方法介绍,思维理解)

二进制与十进制的相互转换(方法介绍,思维理解)

2.2 在线转换工具

二进制与十进制在线转换工具

3.浮点数的 IEEE754 表示

在这里插入图片描述
因为基数固定是 2,因此不存
参考文章:
https://www.cnblogs.com/hzy1987/p/18021627

4.C# 浮点型float、double 、decimal 比较

类型名称bit有效数字( 带有一个固定隐含位)数值范围是否基础类型
float单精度浮点数327(8)±1.5×10E−45 ~ ±3.4×10E38
double双精度浮点数6415(16)±5.0×10E−324 ~ ±1.7×10E308
decimal高精度浮点数12828±1.0×10E−28 ~ ±7.9×10E28

5.解决运算精度问题

5.1 浮点数预算精度问题

public static void Main(string[] args)
{
     Console.WriteLine(0.3f - 0.2f);     // 0.10000001
     Console.WriteLine(0.3 - 0.2);       // 0.09999999999999998
}   

5.2 解决方案

5.2.1 放大倍数计算

var tmp1 = (0.3f * 10) - (0.2f * 10);
float a = tmp1/10;
Console.WriteLine(a);   // 0.1
var tmp2 = (0.3 * 10) - (0.2 * 10);
double b = tmp2/10;
Console.WriteLine(b);   // 0.1

5.2.2 ToString()

string str1 = (0.3f -0.2f).ToString("N3");  // 保留3位有效数字
string str2 = (0.3 -0.2).ToString("N3");    // 保留3位有效数

float.TryParse(str1, out float a);
Double.TryParse(str2, out double b);
Console.WriteLine(a);   // 0.1
Console.WriteLine(b);   // 0.1

5.2.3 Math.Round()

关于Math.Round()的使用:
C# Math.Round() 四舍六入五取偶

double a = Math.Round(0.3 - 0.2, 2, MidpointRounding.AwayFromZero);
Console.WriteLine(a);   // 0.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/680792.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何根据业务需求,轻松挑选SSL证书?

在当今数字化时代,网站的安全性愈发受到重视。SSL证书作为网站安全的“守门员”,不仅能保护用户数据不被窃取,还能提升网站的信任度。但面对市场上琳琅满目的SSL证书产品,如何根据业务需求挑选合适的证书呢?今天&#…

使用python绘制漏斗图

使用python绘制漏斗图 漏斗图效果代码 漏斗图 **漏斗图(Funnel Chart)**是一种特殊的图表类型,通常用于显示一系列数据在某个流程或阶段中的逐步减少情况。**漏斗图的形状类似于漏斗,顶部宽而底部窄,每一层代表一个阶…

发文29篇,超过一半二区以上! | NHANES数据库周报(5.22~5.28)

美国国家健康和营养检查调查(NHANES)是一项旨在评估美国成人和儿童健康和营养状况的研究计划。该调查的独特之处在于它结合了访谈和体格检查。由美国疾病控制和预防中心(CDC)负责为国家提供健康统计数据。 NHANES计划始于20世纪60…

CsvHelper:一个轻便高性能的Csv文件读写操作开源库!

Csv是一种非常常见的文件格式,采用纯文本格式,不依赖于任何特定的软件或数据库,且文件体积小,易于使用。平常项目开发中,需要都会采用这种格式,这就涉及到Csv文件的读写操作。 下面介绍一个轻便高性能的Cs…

libevent源码跨平台编译(windows/macos/linux)

1.windows编译: 克隆: git clone https://github.com/libevent/libevent.git 克隆成功 生成makefile 生成成功 默认不支持OpenSSL,MbedTLS,ZLIB这三个库 编译: cmake --build . --config release

【二进制部署k8s-1.29.4】十一、metallb的安装部署

文章目录 简介 一.安装metallb二.配置metallb三.验证metallb 简介 本章节主要讲解安装metallb-v0.7.1的安装,metallb算是平民版的负载均衡,用于测试、访问量较小的情况还是比较不错的,但是对于请求量比较的时候,由于流量都集中在一…

Spring AI 第二讲 之 Chat Model API 第四节Amazon Bedrock

Amazon Bedrock是一项托管服务,通过统一的应用程序接口提供来自不同人工智能提供商的基础模型。 Spring AI 通过实现 Spring 接口 ChatModel、StreamingChatModel 和 EmbeddingModel,支持亚马逊 Bedrock 提供的所有聊天和嵌入式 AI 模型。 此外&#xf…

js终止递归

终止递归 1. 实现目标:js 编写递归方法 查找指定节点; 2. 需解决问题:找到所需节点后,递归不会终止,直到所有节点遍历完成后才会停止,会消耗性能 3. 解决方案:优化递归方法,在找到…

什么ERP系统?ERP哪些好用?ERP选型建议参考!

什么是ERP系统? 对于ERP系统的概念,其实很简单的。 假定你公司是贸易,产品只是采购(或者贴牌),不用生产,那么erp大概在你公司扮演的是这样的角色: 你的公司接了一笔订单&#xff…

【成品设计】基于STM32单片机的各类联网检测系统

《基于STM32单片机的各类联网检测系统》 所需器件: 医疗空气消毒监控系统的设计与实现 本文在分析了现有智慧医疗子系统相关设计的基础上,针对传统循环风紫外线消毒机信息化程度较低的缺陷,以消毒机的功能需求为切入点,采用物联网层级架构的思想,从软件设计与硬件…

ebay、亚马逊自养号支付下单如何避免账号关联风险?提高成功率。

在亚马逊、ebay平台上,为了降低账号被关联、砍单或F号的风险,卖家及工作室在养号下单时确实需要特别关注所使用的IP和浏览器环境。下面从几个方面进行深刻探讨: 一:IP选择及问题 目前市面上的IP类型多样,如luminati、…

PyQt5学习系列之基础知识“字典”

PyQt5学习系列之基础知识——字典” 啰嗦字典使用字典取值与赋值其他使用 总结 啰嗦 在项目中使用到解析数据存放在字典中,对字典中的数据进行数据转化。即需要使用到字典,并对字典中的数据取值。 字典 一种可变容器模型存储任意类型对象每个键值对&am…

超声波洗眼镜机是智商税吗?四款不能错过的超声波清洗机实力种草

在日常生活中,眼镜成为了我们不可或缺的伙伴,无论是阅读书籍、工作还是享受自然风光,清晰的视野总是至关重要。然而,眼镜上不可避免地会沾染灰尘、油脂甚至细菌,影响我们的视觉体验。传统的眼镜清洗方法虽然简单&#…

即时设计工具对决:Figma、Sketch与XD的优劣比较

最近几年,UI 设计工具出现了许多后起之秀,其中有四款更具代表性的UI设计软件:Sketch、Adobe XD、Figma 和 即时设计,这四个设计软件都有自己的优势。如果合作对您的UI设计过程至关重要,那么Figma 和 即时设计 它应该是…

wmware14虚拟机安装麒麟操作系统

1、首先去麒麟官网申请试用:https://www.kylinos.cn/support/trial.html?trial326339 ​ 我这边试用之后下载了两个操作系统:桌面版和服务器版 百度查了下:各个版本的区别 高级服务操作系统:银河麒麟高级服务器操作系统是一款面…

深圳比创达电子EMC|EMC与EMI一站式解决方案:攻克电磁兼容难题

在当今这个科技日新月异、电子产品层出不穷的时代,电磁兼容(EMC)与电磁干扰(EMI)问题愈发凸显其重要性。为了确保电子设备的正常运行,减少电磁干扰对环境和人体的影响,EMC与EMI一站式解决方案成…

【小工具】电磨机

BUSCH DREMEL3000 博世 琢美 技术规范

Springboot二屯村钓鱼场管理系统的设计-计算机毕业设计源码58167

摘 要 在互联网时代的来临,电子商务的骤起,一时间网络进行购物这一形式备受欢迎,到现在,网购更是普及。现如今各个行业也通过网购的方式来进行拓展业务,增加企业的知名度以及提升业绩,满足了用户像网购一样…

玩机进阶教程-------高通芯片机型常规fast模式线刷固件不进系统 高通分区表修复

有的小伙伴误操作手机分区或者刷写一些固件或者一次偶尔的卡机重启都有几率 导致手机分区表损坏。如果你一味的在fast模式线刷固件。开机还是卡第一屏或者重启进fast模式。这种故障的缘由无论你更换多个固件都无法解决。当然卡第一屏或者反复进fast模式不一定是分区表导致的这种…

论文AI率不达标?AI工具助你一臂之力

告诉大家一个非常残忍的答案,以后所有论文都会被查ai率的。 学术界不仅关注传统的抄袭问题,还增加了一项名为“AIGC检测”的指标。例如知网、维普等平台都能检测论文AI率。 用GPT写论文虽然重复率基本不用担心,但是AI率基本都较高&#xff…