浮点运算稳定吗? [复制]

2024-01-08

我知道浮点数有精度,精度后面的数字不可靠。

但如果用于计算数字的方程相同怎么办?我可以假设结果也会相同吗?

例如我们有两个浮点数x and y。我们可以假设结果吗x/y机器1的结果和机器2的结果完全一样吗? IE。==比较将返回 true


但如果用于计算数字的方程相同怎么办?我可以假设结果也会相同吗?

不,不一定。

特别是,在某些情况下,JIT 被允许使用更准确的中间表示 - 例如当原始数据为 64 位时为 80 位 - 而在其他情况下则不会。当满足以下任一条件时,可能会导致看到不同的结果:

  • 您的代码略有不同,例如使用局部变量而不是字段,这可以更改值是否存储在寄存器中。 (这是一个相对明显的例子;还有其他更微妙的例子可以影响事物,例如try阻止该方法...)
  • 您正在不同的处理器上执行(我曾经观察 AMD 和 Intel 之间的差异;同一制造商的不同 CPU 之间也可能存在差异)
  • 您正在使用不同的优化级别执行(例如,是否在调试器下)

来自 C# 5 规范第 4.1.6 节:

浮点运算可以以比运算结果类型更高的精度执行。例如,某些硬件体系结构支持具有比双精度类型更大的范围和精度的“扩展”或“长双精度”浮点类型,并使用这种更高精度类型隐式执行所有浮点运算。只有在性能方面付出过高的代价,这样的硬件架构才能以较低的精度执行浮点运算,并且 C# 允许对所有浮点运算使用更高精度的类型,而不是要求实现同时牺牲性能和精度。除了提供更精确的结果之外,这很少产生任何可测量的效果。然而,在形式的表达中x * y / z,其中乘法产生的结果超出双精度范围,但随后的除法将临时结果带回到双精度范围内,以更高范围格式计算表达式的事实可能会导致产生有限结果,而不是无穷大。

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

浮点运算稳定吗? [复制] 的相关文章

随机推荐

  • Python 3.x 导入错误 SyntaxError [重复]

    这个问题在这里已经有答案了 我正在使用 macOS Sierra 导入时builtwith我收到以下错误 Daniels MacBook Pro Daniel python Python 3 5 2 Anaconda 4 2 0 x86 6
  • ImportError:无法导入名称“_ColumnEntity”Ubuntu20.10 [重复]

    这个问题在这里已经有答案了 pip install apache superset 然后我写了 superset db upgrade 我收到以下错误 Traceback most recent call last File home co
  • 在大型数据表中替换 NA 的最快方法

    我有一个大数据表 http cran r project org web packages data table index html 许多缺失值分散在大约 20 万行和 200 列中 我想尽可能有效地将这些 NA 值重新编码为零 我看到两
  • 如何在 Laravel 中验证 API 路由的 Vue.js / Axios 请求

    我在 Laravel 5 6 中 我已经构建了所有 API 路由 并正确响应来自 REST 客户端 Paw 的请求 我正在尝试构建一个简单的前端来访问这些路由 我尝试尽可能多地使用 Laravel 的开箱即用功能 因此我使用 Axios 使
  • 多次 fork 调用会导致 BlockingIOError

    我正在寻找有关以下代码片段的错误的解释 usr bin env python3 import os sys if name main while True pid os fork if pid 0 sys exit elif pid gt
  • 在 Entity Framework Core 中获取当前用户 ID 的正确方法

    对于 ASP NET Core 的不同 RC 关于如何获取当前登录用户的 ID 这里有很多不同的答案 我想在这里问一个明确的问题 请注意 project json 现在有 Microsoft AspNetCore Identity Enti
  • 相当于 grails 中的 InheritanceType.TABLE_PER_CLASS 吗?

    我想为 3 个域类创建 3 个单独的表 A B 扩展 A C 扩展 B 但我希望他们的表不相互连接 在hibernate中 我会使用InheritanceType TABLE PER CLASS 在grails中 等价物是什么 尝试使用ta
  • Golang 结构体接口

    我有一个函数 其参数类型为 interface 如下所示 func LoadTemplate templateData interface 就我而言 templateData 是一个结构 但每次它都有不同的结构 我使用 interface
  • 如何从异步函数返回 Promise?

    当我尝试从异步函数返回 Promise 时 无法区分返回的 Promise 和函数的状态 我认为 最简单的解决方案是将要返回的承诺放在数组中 下面是一个愚蠢的例子 但我希望它能说明问题 function loadMetaData id Re
  • 互联网浏览器中的tinymce图标

    我正在使用 TinyMCE 但图标图像未显示在 Internet Explorer 中 我检查了讨论here https stackoverflow com questions 2625019 how do i get the icons
  • 如何在 Android 上的应用程序启动器图标上显示气球计数器

    我想为android制作一个图标计数器 就像电子邮件和三星应用程序应用程序一样 我已经看到其他开发人员提出了这样的请求 但你们都说这是不可能完成的 如果是这样 为什么这两个应用程序和其他应用程序可以做到这一点 我是否必须制作多个图标图像并交
  • 停止 NSApplication 主事件循环

    我有一个由以下内容组成的应用程序 m file import
  • Java:删除点之后的所有字符

    我有一个简短的问题 我得到以下代码 String chapterNumber 14 2 1 我怎样才能从我的 chapterNumber 中获得如下所示的字符串 String mainChapterNumber 14 Edit 我想要 in
  • 删除 API post 调用的 csrf 保护

    我想从我的 Express 3 0 应用程序中删除 csrf 因为我在那里不需要它 我使用 oauth 来验证客户端 使用express csrf 时 中间件是否将API URL列入白名单 您可以通过两种方式做到这一点 1 创建一个自己的小
  • 服务器不读取客户端消息

    我再次需要套接字编程方面的帮助 现在 我想在使用命令单击按钮后将文本字段的值写入 Linux 中的远程服务器日志文件 echo textfieldValue gt gt filename 我在 Server java 中创建了两个线程 线程
  • 使用 Deno 编译时如何使用 lib.dom.d.ts 中的类型?

    我使用 Deno 编译一些 TypeScript 然后将其作为网页的一部分提供 以便它在浏览器端运行 我正在尝试在客户端使用画布元素 为此我需要类似的类型CanvasRenderingContext2D or CanvasGradient
  • BigQuery SQL:- 识别字符串中一行中的相同数字

    我想使用 SQL Bigquery 确定字符串何时连续出现 4 次以上相同的数字 例子 AAAAAB true BBBBAA false 111111 true 01010101010101 false 到目前为止 我已经尝试过使用正则表达
  • PHP聊天客户端

    我需要在 php js ajax 中创建一个聊天应用程序 需要将其集成到一个网站中 其中遇到的问题是创建一个聊天窗口 该窗口在浏览网站中的不同页面时需要保持不变 如果有人能提出更好的方法 我将不胜感激 提前致谢 至于实际的聊天应用程序 使用
  • 在 Powershell 中导入 CSV ,每 10 行分成多个文件

    我是 powershell 编码新手 我想做的是导入行数未知的 CSV 文件 然后每 10 行将其拆分为一个新的 CSV 文件 例如 如果我输入 97 行的 CSV 文件 我期望 9 个 10 行的文件和 1 个 7 行的文件 我尝试了以下
  • 浮点运算稳定吗? [复制]

    这个问题在这里已经有答案了 我知道浮点数有精度 精度后面的数字不可靠 但如果用于计算数字的方程相同怎么办 我可以假设结果也会相同吗 例如我们有两个浮点数x and y 我们可以假设结果吗x y机器1的结果和机器2的结果完全一样吗 IE 比较