浮点和定点表示的优缺点[关闭]

2023-12-27

在过去的三天里,我一直在尝试理解浮点表示和定点表示之间的确切区别。我在阅读这些材料时感到困惑,无法确定什么是对的,什么是错的。

问题之一是一些技术术语的含义,如“精度”、“尾数”、“非规范化”、“下溢”等。

谁能举例说明差异?

到目前为止我已经能够找出(并且能够清楚地理解)的要点如下:-

浮点 -
1. 优势提供非常大的范围
2. 坏处四舍五入large数字

固定点 -
1. 优势数字代表exactly(涉及“金钱”时使用)
2. 坏处提供非常有限的范围

但我知道还有很多差异(主要是优点和缺点)。谁能列出来并解释一下?


浮点背后的技术需要很多时间来适应。这里我就不详细说了。

简单地说,浮点实现了高域(从接近于零的非常小的数字到非常高的数字,有时甚至高于宇宙中原子的数量)。浮点数通过保持relative误差常数。 IE。数字将在固定位数的小数后开始四舍五入(这是一种简化,但有助于理解原理)。这与大多数自然科学中的“有效数字”概念非常相似。然而,这意味着浮点数总是以某种方式四舍五入。如果将一个非常小的数字添加到一个非常大的数字,则小数字将被截断而大数字将保留。当小数字低于阈值时,就会发生这种情况。如果添加许多数字,有时可能需要先对它们进行排序,然后将小数字添加到大数字之前。还需要考虑数字稳定性的概念,即算法如何因舍入而偏离正确结果。

另一方面,定点表示将始终具有相同的absolute错误。如果您存储小数点后 4 位的货币,您知道您的数据最多会偏差 0.00005 美分。但是,如果您添加数据,此错误可能会再次累积,但其规则与浮点规则有很大不同。

除非您正在进行繁重的数字工作,否则可能不应该考虑这些问题。大多数时候,只要小心谨慎(即从不使用==在浮点数或定点数上。然而,比较它们的正确方法对于两者来说是不同的)。此外,据我所知,浮点数在科学工作中更常用,因为大多数情况下,科学家都会接受过数字方面的培训,知道如何处理舍入,并且只对相对精确的结果感兴趣。固定点用于金融领域,其中每个舍入都必须计算并存储在某个地方(通常银行只会保留舍入的半微分),因此您必须很好地控制绝对误差,以便以后能够考虑它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浮点和定点表示的优缺点[关闭] 的相关文章

  • Google Sheet 产生无穷小数作为整数/整数的余数

    我有这个工作表 我需要在其中创建一个检查器来确定一个数字 两个数字之和除以另一个值 DIVISOR 的结果 是否是整数 没有小数 运行上述检查器后 它大部分工作得很好 但似乎检测到一些项目不是整数 尽管它们是除数的精确倍数 https do
  • 在 .net 中,如何在 Decimal 和 Double 之间进行选择

    前几天我们在工作中讨论了这个问题 我希望有一个 Stackoverflow 问题我可以向人们指出 所以就在这里 和有什么区别Double http msdn microsoft com en us library x99xtshc VS 7
  • C IEEE-Floats inf 等于 inf

    在 C 中 在使用 IEEE 754 浮点数的实现中 当我比较两个 NaN 浮点数时 它返回 0 或 false 但是为什么两个都为 inf 的浮点数会被视为相等呢 该程序打印 equal 至少在带有 gcc 的 Linux AMD64 下
  • 大浮点和的精度

    我正在尝试对正递减浮点数的排序数组求和 我发现对它们求和的最佳方法是开始从最低到最高将数字相加 我编写此代码是为了提供一个示例 但是 从最高数字开始的总和更精确 为什么 当然 1 k 2之和应该是f 1 644934066848226 in
  • Python,在输出中将所有浮点数打印到小数点后两位

    我需要输出 4 个不同的浮点数到小数点后两位 这就是我所拥有的 print 2f var1 kg 2f var2 lb 2f var3 gal 2f var4 l 这是非常不干净的 而且看起来很糟糕 有没有办法让输出 2f 中出现任何浮动
  • 在不改变目标类型的情况下以最高精度序列化浮点数

    我需要反序列化原始二进制数据 BinaryFormatter 然后序列化为 JSON 用于编辑 然后再次将其序列化回二进制 显然 我输在了浮动上 原始浮点值0xF9FF4FC1 大端 大致 12 9999933 四舍五入为0xF6FF4FC
  • 是否可以在不诉诸任意精度数据类型的情况下消除浮点错误?

    我想知道在特定条件下是否可以在不诉诸任意精度数据类型的情况下消除浮点错误 问题是常见的 语言是 Ruby 但它适用于任何语言 f 1829 82 gt 1829 82 f 12 0 gt 152 485 f 12 0 round 2 gt
  • 标准化浮点数 f 之后(之前)的下一个标准化浮点数是什么?

    给定一个标准化浮点数 f 下一个是什么归一化f 之后 之前的浮点数 通过一些调整 提取尾数和指数 我有 next normalized double if mantissa is not all ones maximally denorma
  • 当一个数字完全整除时,如何在 python 中显示两个小数点?

    目前我正在尝试解决一个问题 我应该将答案打印到小数点后两位不四舍五入 我为此目的使用了以下代码 import math a 1 175 value of a after some division print math floor a 10
  • Python浮点数比较

    我只是回顾了 Python 的一些基础知识 并且有一个关于比较浮点数的棘手问题 2 2 3 0 6 6 3 3 2 0 6 6 I thought these should both return a False However the s
  • 浮点数和字符串转换的奇怪行为

    我已将其输入到 python shell 中 gt gt gt 0 1 0 1 0 010000000000000002 我预计 0 1 0 1 不是 0 01 因为我知道以 10 为底的 0 1 在以 2 为底的情况下是周期性的 gt g
  • 安全浮点除法

    我的代码中有一些地方我想确保 2 个任意浮点数 32 位单精度 的除法不会溢出 目标 编译器不保证 足够明确 对 INF INF 的良好处理 并且 不完全保证 IEEE 754 的异常值 可能未定义 并且目标可能会改变 另外 我无法对这几个
  • Python:计算非整数的阶乘

    我想知道是否有一种快速的 Pythonic 的方法来计算非整数的阶乘 例如 3 4 当然 内置的factorial 函数在Math模块可用 但它仅适用于积分 我不关心这里的负数 你想用math gamma x http docs pytho
  • 如果两种语言都遵循 IEEE 754,那么两种语言的计算会得到相同的结果吗?

    我正在将程序从 Scilab 代码转换为 C 特别是一个循环产生的结果与原始 Scilab 代码略有不同 这是一段很长的代码 因此我不会将其包含在问题中 但我会尽力总结下面的问题 问题是 循环的每一步都使用上一步的计算 此外 计算之间的差异
  • C++ 将浮点数转换为无符号字符?

    我是 C 新手 我想做了一些谷歌搜索sprintf可以完成这项工作 但是编译时出现错误 无法在unsigned char and a char 我需要一个无符号字符 因为我要打印到图像文件 0 255 RGB unsigned char p
  • 为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?

    我正在对科学应用程序进行一些数值优化 我注意到的一件事是 GCC 会优化调用pow a 2 通过将其编译成a a 但是调用pow a 6 没有优化 实际会调用库函数pow 这大大降低了性能 相比之下 英特尔 C 编译器 http en wi
  • 浮点舍入效果说明

    include
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 从 str 转换为 float 时保持尾随 0

    将带有尾随零的数字从字符串转换为浮点数时遇到以下问题 a 1 100 string a str a float a float string a float a 1 1 有没有办法将 str 转换为 float 同时保留末尾的尾随 0 首先
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d

随机推荐

  • 通过 Xaml 将代码隐藏中定义的依赖属性绑定到 UserControl 的 DataContext 中的属性

    我想使用与找到的代码类似的代码here https stackoverflow com questions 2404080 expose usercontrol property to xaml我遇到的问题是我想扩展它以允许使用 XAML
  • Spring Boot上传BootRepackage可执行Jar

    我正在使用 Spring Boot 来开发我的新项目 在我的 build gradle 文件中 我使用 bootRepackage classifier 因此我可以单独生成项目的默认 jar 和使用 Spring Boot 生成的可执行 j
  • 如何处理内存中的Excel文件?

    我正在尝试创建一个 API 它将接受来自客户端的 Excel 文件的表示形式 我希望在处理第一个工作表后返回一个 List gt 作为 JSON 数组 但是 我无法将文件写入磁盘 并且所有处理must happen 在记忆中 有哪些方法可以
  • 确定 connect-msolservice 是否已成功调用

    我正在 PowerShell 中编写 Office 365 辅助工具 并且有一个我认为是简单的问题但找不到答案 我如何判断连接是否由Connect MsolService是否存在且活跃 必须有某种方法可以知道 因为其他 cmdlet 可以检
  • 使用 AWS CLI 通过标签终止 EC2 实例上的一组

    对 AWS 不太熟悉 但是我希望通过按标签名称进行过滤来使用 AWS CLI 终止一组 ec2 实例 如果我使用describe instances I can filter按标签 键 value For terminate instanc
  • 尽管已安装但未找到 Python 模块

    我试图告诉 pandoc 使用用 python 编写的自定义 pandocfilter 我使用的是 MacBook M1 因此安装了 2 7 和自制的 3 9 7 版本的 python 由于某种原因 尽管已正确安装 但未找到 pandocf
  • 匹配一个“.”在java中[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有下面的
  • 我可以在 Android 设备上存储数据以在安装之间保留吗?

    我想以在应用程序安装之间保留少量数据的方式存储少量数据 我显然无法使用 SharedPreferences 因为它们在卸载时会被删除 有没有什么方法可以存储数据 以便在重新安装应用程序后数据仍然存在 我想要存储的数据是一个唯一的 ID 以便
  • PHP 安全性:将 POST 发送到相同的 URL = 不好?

    昨天我收到了有关将 POST 数据发送到同一页面的问题的回复重定向后获取模式 http en wikipedia org wiki Post Redirect Get像这样 if isset POST Submit prevent rese
  • WPF 窗口背景 ImageBrush 不平铺

    我有一个带有背景图像的窗口 图像可能会在运行时发生变化 这对此并不重要 我希望图像固定在左上角 确实如此 而不是缩放 这也是正确的 但是当窗口大于图像时 我需要重复 平铺 图像 我正在做 我缺少什么 TIA 您需要设置TileMode ht
  • Xerces C++ - 加载、读取和保存,替代方案?

    我正在寻找一个教程来加载 XML 文件 读取它 更改它并最终使用 C 保存它 我正在使用 Linux Ubuntu 并尝试使用 Xerces 通过 Google 和很多时间 我只能加载一个 XML 文件 include
  • 查找 postgres jsonb 数组中对象的位置

    我在 jsonb 中有一个看起来像这样的对象数组value表的列 west id aa92f346 7a93 4443 949b 4eab0badd983 version 1 id cd92e346 6b04 3456 050a 5eeb0
  • 如何确保日志永久保留在Kafka中?

    我需要配置Kafkanever删除日志 查看他们的文档 我看到两种控制此操作的参数 日志清理器 描述于http kafka apache org documentation html compaction http kafka apache
  • 通过 Webpack 5 模块联合提供样式和资源

    我已经在我的 Angular 11 应用程序中成功实现了相对较新的 webpack 5 模块联合系统 因此它可以从另一个版本按需远程加载模块 我一无所获的一件事是如何处理样式表和图像等资源 例如 联合模块中有一个菜单元素需要自己的样式 将它
  • 反序列化为 JObject 时获取类型名称

    使用 Deserialize 时有没有办法获取 type 属性 我在打开 TypeNameHandling 的情况下进行序列化 但是当我反序列化时 我没有包含类型信息的程序集 我需要使用类型名称将其存储在正确的集合中 看起来 type 没有
  • IIS 8.5 服务 dll 用于下载而不是执行

    问题 当我访问 32位 DLL通过 URL 类似http localhost somepath some dll action http localhost somepath some dll actionIIS总是认为我想下载文件 文件大
  • 枚举声明中不必要的逗号[重复]

    这个问题在这里已经有答案了 可能的重复 NET 枚举允许在最后一个字段中使用逗号 https stackoverflow com questions 2147333 net enumeration allows comma in the l
  • 更改表所有者

    我正在尝试更改表的所有者 sp changeobjectowner OWNER TABLENAME dbo 但是执行时我收到错误消息 消息 15001 级别 16 状态 1 过程 sp changeobjectowner 第 62 行对象
  • 调试 KML 文件

  • 浮点和定点表示的优缺点[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在过去的三天里 我一直在尝试理解浮点表示和定点表示之间的确切区别 我在阅读这些材料时感到困惑 无法确定什么是对的 什么是错的 问题之一