八度舍入和评估顺序

2023-12-10

在八度我得到

1 - 0.05 -0.95 = 0

and

1 - 0.95 -0.05 = 4.1633e-17

据我所知,这是由求值顺序与近似二进制表示相结合引起的 0.05 为 0.00(0011) 和 0.95 为 0.11(1100) 有人可以给我整个故事或给我一个解释它的链接吗?

- -编辑: 这个问题不是重复的为什么 MATLAB 中的 24.0000 不等于 24.0000?,被其他人识别为可能的重复项。后者处理数字的舍入表示。前者询问计算的执行顺序影响结果精度的机制的细节。


Matzeri 的浮点算术权威资源链接确实是这个问题的明确答案。但是,为了完成:

octave:34> fprintf("%.80f\n%.80f\n", 0.95, 1 - 0.05)
0.94999999999999995559107901499373838305473327636718750000000000000000000000000000
0.94999999999999995559107901499373838305473327636718750000000000000000000000000000

octave:35> fprintf("%.80f\n%.80f\n", 0.05, 1 - 0.95)
0.05000000000000000277555756156289135105907917022705078125000000000000000000000000
0.05000000000000004440892098500626161694526672363281250000000000000000000000000000

换句话说,0.95 不太容易用浮点精确表示,因此第一步中涉及 0.95(无论作为输入还是作为输出)的任何计算都必然不如仅使用 0.05 的计算精确。

所以:

1 - 0.05 = 0.95 (imprecise, due to intrinsic floating-point representation)
(1 - 0.05) - 0.95 = exactly 0 (since both are represented identically imprecisely)

vs

1 - 0.95 = imprecise 0.05 (due to involvement of 0.95 in calculation)
(imprecise 0.05) - (precise 0.05) = not exactly 0 (due to difference in precisions)

HOWEVER。应该指出的是,这种精度差异远低于机器公差(由eps-- 我的机器上是 2.2204e-16)。因此,对于所有实际应用,4.1633e-17is0. 如果这里的实际点是测试计算结果是否为有效地0,那么实际上,在处理浮点计算时应该始终考虑机器精度,或者最好找到一种方法来重新表述您的问题,以便完全避免相等测试的需要。

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

八度舍入和评估顺序 的相关文章

  • python读取大型二进制文件最有效的方法是什么

    我有一个大 21 GB 文件 我想将其读入内存 然后传递给一个子例程 该子例程对我透明地处理数据 我在 Centos 6 5 上使用 python 2 6 6 因此无法升级操作系统或 python 目前 我正在使用 f open image
  • 如何用Java读取.EXE文件的内容

    在 Java 中读取可执行文件有哪些可能的选项和最合适的选项 我想生成 exe 文件的十六进制表示形式 我正在考虑以二进制方式读取文件 然后进行转换 但是我怎样才能读取 exe呢 1 以字节形式读取文件 使用 BufferedInputSt
  • 从 Process.StandardOutput 捕获二进制输出

    在 C 在 SuSE 上的 Mono 2 8 下运行的 NET 4 0 中 我想运行外部批处理命令并以二进制形式捕获其输出 我使用的外部工具称为 samtools samtools sourceforge net 它可以从称为 BAM 的索
  • 将任何文件转换为二进制文件,反之亦然

    我在 StackOverFlow 网站和互联网上搜索了这个问题及其相关问题 但仍然没有得到明确的答案 我想知道我可以使用什么软件将任何文件 关于大小 转换为包含此特定文件的零和一 仅 的文本文件 然后将包含这些零和一的文本文件转换回原始文件
  • fft 和小波

    我可以使用 fft 获取加载的 1 秒音频文件的频率 相位和幅度 并重新创建它 我现在想做的是找出每个频率在 1 秒音频文件中的开始位置和结束位置 并将数据放入数组中 示例 100hz 从 0 23 秒到 0 34 秒开始 104 34hz
  • Ruby - 如何将消息长度表示为 2 个二进制字节

    我正在使用 Ruby 并且正在与一个网络端点进行通信 该端点需要在发送消息本身之前格式化 标头 标头中的第一个字段必须是消息长度 它被定义为网络字节顺序中的 2 个二进制字节消息长度 例如 我的消息长度是1024 如何将 1024 表示为二
  • Javascript:相当于 PHP 的 hash_hmac() 与原始二进制输出?

    我正在连接到亚马逊产品广告 API 要签署我的请求 我需要对原始二进制文件HMAC SHA256 哈希的输出 In hash hmac 的 PHP 文档 http php net manual en function hash hmac p
  • 有用的二进制差异工具(除了 msdn[apatch 和 mpatch]、xdelta、bsdiff、vbindiff 和 winmerge)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要一个二进制 diff 工具 它可以从比较的 8MB 文件 dat 压缩文件 生成补丁文件 并且可以将生成的补丁文件合并到旧的 dat
  • 原始(二进制)数据太大而无法写入磁盘。如何按块写入磁盘(附加)?

    我在 R 中有一个很大的原始向量 即二进制数据数组 我想将其写入磁盘 但我收到一条错误消息 告诉我该向量太大 这是一个可重现的示例和我收到的错误 gt writeBin raw 1024 1024 1024 2 test bin Error
  • 使用node.js fs.writeFile写入二进制数据以创建图像文件

    我正在尝试用 node js 编写画布数据fs writeFile https nodejs org api fs html fs fs writefile file data options callback作为二进制文件 JPEG 文件
  • RAM 存储二进制数和汇编语言的冒泡排序

    我必须使用 ARM v7 执行一个例程 在 RAM 内存中存储 10 个二进制数 然后使用冒泡排序对这些数字从高到低进行排序 我应该如何开始 func bubbleSortAscendingU32 ldr r3 r0 4 mov r1 9
  • 在 C 中将整数转换为二进制

    我正在尝试将整数 10 转换为二进制数 1010 此代码尝试执行此操作 但我在 strcat 上遇到段错误 int int to bin int k char bin bin char malloc sizeof char while k
  • 如何在 Swift 中将十六进制数转换为 bin?

    我有字符串变量 var str 239A23F 如何将该字符串转换为二进制数 str toInt 不起作用 您可以使用NSScanner 来自基金会框架 let scanner NSScanner string str var result
  • 从 Octave 导出的图中具有透明背景

    我在 Win 10 下使用便携式 Octave 5 1 0 我的意思是写一个具有透明背景的 png 绘图 免责声明 这个问题与下面链接的两个问题类似 我选择了提出当前不同的问题 https meta stackoverflow com qu
  • 如何查找数字的二进制表示形式中 1 的个数?

    从其他搜索中 我发现这个问题被称为 汉明权重 或 人口计数 这么多的统计数据已经给出了很多答案吗 我需要以简单的方式找到解决方案吗 复杂性并不是什么大问题 JavaScript 中是否有像 Java 的 Integer bitCount 这
  • 什么是低位和高位?

    谁能告诉我什么是低位和高位 如何识别高位和低位 下面是二进制形式 如何0110里面有更高位吗 0110 0111 1100 1010 1100 0111 1001 1011 就像十进制一样 二进制中较高位通常写在左侧 所以如果你看到0111
  • 用 C 将位写入文件

    我有这个字符串 101 我想用 C 语言将其写入文件 而不是文本 101 等 8 位 x 字符 但直接使用字符串作为位 位 1 位 0 和位 1 这样文件将是3位 有可能吗 我在网上搜索并尝试这样做 char c 25 101 FILE b
  • 单机Octave并行计算——包和示例

    我想在单台机器 而不是集群 上并行化 Octave 中的 for 循环 前段时间我问了一个关于Octave并行版本的问题Octave并行计算 https stackoverflow com questions 7047840 paralle
  • 打印绘图时 Octave 崩溃

    Solution 根据用户 Andy 在评论中的建议 最新版本的 Octave 目前 octave 4 0 1 rc4 的更新解决了该问题 并且绘图可以另存为 PNG 我有大量数据在 Octave 中绘制 但是当我尝试保存图像时 程序崩溃了
  • 瞬态 REST 表示

    假设我有一个 RESTful 超文本驱动的服务 用于模拟冰淇淋店 为了帮助更好地管理我的商店 我希望能够显示每日报告 列出所售每种冰淇淋的数量和美元价值 看来这种报告功能可以作为名为 DailyReport 的资源公开 DailyRepor

随机推荐

  • Sass 3.4 删除字符串上的正斜杠

    是否有解决方法或任何其他方法可以使其在 Sass 3 4 上工作 mixin icon name code name before content str slice x 1 1 code include icon test 4556 代码
  • 从 WordPress 中提取数据

    从 Wordpress 数据库提取数据的最佳方法是什么 我认为创建一个插件会很好 有没有可以完成这项工作的教程 或者有一个插件可以做到这一点 通过 JSON XML 拉取页面内容 干杯 米奇 这是该插件的链接 http wordpress
  • 指针比较

    C 和 C 中的指针是否支持比较运算符 gt lt 等 标准 我想精确地比较数组位置 在连续数组中比较内存偏移量 指针 是可以的 如果您的数组被实现为链表 例如 则节点可能遍布内存 因此指针比较是无意义的
  • JQuery 查找并更改字符串的样式

    我需要编写一个函数 在 HTML 页面中的所有内容中搜索特定字符串 如果找到 则更改文本的颜色 这可能吗 Thanks 你可以这样做 CSS someclass color red JavaScript p contains yourstr
  • 如何将“System::String ^”转换为“TCHAR”?

    我问了一个问题here涉及 C 和 C 通信 问题解决了 但又引发了新的问题 这将返回一个字符串 C return Marshal PtrToStringAnsi decryptsn InpData 这需要一个 TCHAR C lpAlph
  • 数据库特定的迁移代码[重复]

    这个问题在这里已经有答案了 我正在创建一个需要在多个数据库下运行的应用程序 我目前在迁移中有一些代码 我只想在特定数据库 postgresql 和 mysql 下运行 有什么方法可以设置吗 谢谢 您的迁移可以访问数据库连接connectio
  • NSArray 后面的方括号索引是什么意思? [复制]

    这个问题在这里已经有答案了 浏览 iTunes U 开发适用于 iPhone 和 iPad 的 iOS 7 应用程序以及第 3 讲幻灯片中的第 120 页 有一个测验问题询问以下代码行的作用 说实话 我有点困惑 希望有人能破解它 cardA
  • “~”运算符在此脚本中做什么? [复制]

    这个问题在这里已经有答案了 您好 我从特定索引中删除一个数组 我附带了这个脚本 var arr 1 2 3 4 var index 2 if index arr splice index 1 我谷歌 what does operator d
  • 使用Spring SpEL表达式获取Annotation中引用的动态参数

    我想做的是拥有一个看起来很像 Spring 提供的 Cacheable Annotation 的注释 在方法之上使用 如下所示 CleverCache key orders concat id public Order getOrder i
  • 通过管道传递多个参数和最后一个函数的结果

    我正在使用 Ramda js 构建一个管道 它接受三个参数 第一个函数需要这三个参数 其结果用于第二个函数 但是 第二个函数还需要初始参数之一 我无法弄清楚构建类似的东西的分支 在伪代码风格中 我需要这样的东西 const composed
  • OAuth、带参数的 POST 问题

    我正在使用 Jon Crosby 的开源 Objective C OAuth 库http code google com p oauthconsumer 对于一些不处理令牌的基本 http 身份验证 仅处理消费者密钥和消费者秘密 我的代码非
  • 在 Blazor WebAssembly 应用程序中授权普通 Razor 页面?

    我正在使用 Blazor Wasm 编写 SPA 我使用了标准模板并包含托管在服务器中的用户帐户 该服务器也创建了服务器应用程序 到目前为止一切都很好 我想补充一点 我正在使用 Net5 RC2 但我认为这不是我的问题 我希望在服务器和客户
  • Weka GUI 和 Weka 通过 Java 代码得到不同的结果

    我正在使用 NaiveBayesMultinomialText 分类器在 Weka 中应用文本分类 问题是 当我使用 GUI 来执行此操作并在相同的列车数据上进行测试 无需交叉验证 时 我获得了 93 的准确率 而当我尝试通过 java 代
  • 使用maven将版本号输出到文本文件

    我想生成一个 zip 文件 该文件将使用 Maven 更新应用程序 该 zip 将托管在服务器上 我使用程序集插件来生成 zip 不过 我希望 maven 自动生成一个文本文件 将当前版本号存储在 zip 之外 这怎么可能 编辑 我使用 M
  • 使用 ggplot 实现多年销售的同步 X 轴

    我有从2012 01 01到现在 2015 11 20 的1417天的销售数据 我不知道如何在同一年的窗口中拥有单年 1月1日 12月31日 轴和每年的销售额 即使使用ggplot scolor as factor Year option
  • 在不使用 SQLAlchemy 的情况下在 Flask 工厂函数中配置 MySQL 数据库

    我是 Flask 新手 正在尝试使用 MySQL 数据库构建一个简单的应用程序 但是 我不想使用 SQLAlchemy 相反 我想使用mysql connector并将 SQL 语句定向到数据库中的 SELECT INSERT UPDATE
  • 使用 CMake 和 Conan 的外部库的未定义引用

    我正在尝试开发一个程序 使用 Conan 和 CMake 以及 LibLogicalAccess 库与 PCSC USB 读卡器进行通信 我按照构建和安装库的说明进行操作 似乎进展顺利 我使用 main cpp 文件创建了一个小型简单的控制
  • 如何在将上传的文件保存到目录之前重命名它?

    下面是我用来将文件上传到目录的代码 效果很好 我的主要问题是 move uploaded file 就是将上传的文件保存到目录中的 也是我猜测的move uploaded file 是为其设置名称的人 如何将文件名更改为随机数 我尝试在下面
  • 问号和冒号(?:三元运算符)在 Objective-C 中意味着什么?

    这行代码是什么意思 label frame inPseudoEditMode kLabelIndentedRect kLabelRect The and 让我困惑 这是C三元运算符 Objective C 是 C 的超集 label fra
  • 八度舍入和评估顺序

    在八度我得到 1 0 05 0 95 0 and 1 0 95 0 05 4 1633e 17 据我所知 这是由求值顺序与近似二进制表示相结合引起的 0 05 为 0 00 0011 和 0 95 为 0 11 1100 有人可以给我整个故