- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能解释一下最低精度的 ULP 单位?我有如下定义,但还是不清楚
“表示分数时的误差大小与存储的数字大小成正比。ULP 或最小精度单位定义了存储数字时可以获得的最大误差。存储的数字越大,ULP 越大”
具体是什么意思?提前致谢
最佳答案
在浮点格式中,数字用符号 s、有效数(也称为分数)f 和指数 e 表示em>。例如,对于二进制 float ,由 s、f 和 e 表示的值是 (-1) s•f•2e
f 被限制为一定数量的数字,并且在二进制中,通常要求至少为一位且小于两位。可以对数字进行的最小更改(下面讨论的某些异常(exception)情况)是将 f 的最后一位修改为 1。例如,如果 f 被限制为六位二进制数,那么它的值从 1.00000 到 1.11111,它可以做的最小变化是 0.00001。给定指数 e,f 变化 0.00001 会修改 0.00001•2e 表示的值。这是最小精度单位 (ULP)
请注意,ULP 因指数而异。
我提到的异常发生在最大的可表示有限值(其中数字只能通过产生无穷大来增加),最小(最负)的可表示有限值,零和次正规数(特殊情况发生在分数和指数),以及指数变化的边界。在这些边界处,您正在减小指数,这意味着 f 的最低有效数字的值减小,因此步长实际上是旧 ULP 的 ½。
当单个操作仅受浮点系统在其有限范围内(而不是超出该范围)可以表示的数字的限制时,结果中的最大误差为 ULP 的 ½。这是因为,如果您距离精确的数学结果超过 ½ 个 ULP,您可以将计算结果更改 1 个 ULP,以便其误差幅度减小。 (例如,如果精确结果为 3.75,则从 3 更改为 4 会将误差从 .75 更改为 .25。)
基本算术运算,例如加法、乘法和除法,应提供四舍五入到最接近的可表示结果的结果,因此它们的误差最多为 ½ ULP。平方根也应该以这种方式实现。数学库函数(如余弦和对数)的目标是提供良好的舍入,但很难获得正确的舍入,因此商业库通常不保证正确的舍入。
从十进制(例如 ASCII 文本)到内部浮点格式的转换应该正确舍入,但并非所有软件库或语言实现都能正确执行此操作。
复合运算(例如为获得结果执行多次计算的子例程)将存在许多舍入误差,并且通常不会返回与数学上精确结果相差 ½ 个 ULP 以内的结果。
请注意,表示分数时误差的大小与存储的数字的大小成正比,这在技术上是不正确的。误差的界限大致成正比——我们可以说 ½ ULP 是误差的界限,而一个 ULP 大致与数量成正比。它只是大致成正比,因为它的变化系数为两倍(当使用二进制时),因为分数范围从一到二。例如,1 和 1.9375 具有相同的 ULP,因为它们使用相同的指数,但 ULP 中 1 的比例大于 1.9375。
而且只有误差范围大致成正比。实际错误取决于所涉及的数字。例如,如果我们将 1 和 1 相加,我们将得到 2 且没有错误。
关于testing - 最低精度的 ULP 单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43965347/
This question already has answers here: Closed 11 years ago. Duplicate: Recommended website resoluti
我有一个网络应用程序需要 IE9。其他浏览器(Firefox、Chrome、Opera 等)的等效浏览器版本是什么? 我知道如何检查用户当前的浏览器/版本,如果不支持,我需要看看是否可以为用户提供下载
我在比较 Mysql 数据库中的两个值并显示最低值时遇到问题。 比如我有这个: value1 = 23.4 value2 = 4.479 我试过这个: ORDER BY CAST(column AS
我有一个需要使用的功能,但我需要将我的最小 SDK 设置为 23 才能使用它。问题是,我们的应用程序运行在很多低端 SDK 设备上。有什么方法可以设置我的项目以允许我在编译应用程序的同时仍然使用较低的
我需要在32位数字中获得一个1位数字,其中只有一个1位(总是)。用C ++或asm最快的方法。 例如 input: 0x00000001, 0x10000000 output:
我已经对我的数据进行了分组。现在,我要做的是每周从“高”列中选择最高值,并从“低”列中选择最低值,然后使用最高值减去最低值得到范围。但是代码总是错误的。有人对我有想法吗? 这是我的 DataFrame
如何编写一个存储 20 个数字的数组,然后显示以下数据:数组中最小的数字、最大的数字、数字的总和以及它们的平均值? 最佳答案 使用java编程语言 int myArray[] = {15,25,85,
在学习 C 的同时做一些实验,我遇到了一些奇怪的事情。这是我的程序: int main(void) {sleep(5);} 当它被编译时,可执行文件的文件大小为 8496 字节(与 26 字节的源代码
我已经创建了我想在我的项目中使用的包。在包中,我使用的是 UIStackView。当我将包添加到项目并运行它时,我收到错误 'UIStackView' 仅适用于 iOS 9.0 或更高版本。如果我的项
我已经制定了一个程序来显示给定日期的特定时间的最高和最低流行项目。该过程没有错误或异常,并且一切正常。如您所见,为了显示 Items 的第一条记录,查询重复了两次,但唯一的区别在于顺序(ASC 和 D
我是 BPEL/BPMN 新手。 是否可以在没有 WS-* Web 服务和 EJB 容器(例如 jBoss、WebLogic、Glassfish)的情况下编写 BPEL/BPMN 感知软件? 我想知道
我们正在使用 OpenGL 4.3。但是,我们担心我们使用的功能适用于我们的显卡,但不符合 OpenGL 4.3 的“最低”要求规范。 是否有可能模拟最低限度的行为?例如,让显卡拒绝任何非标准纹理格式
我正在我的应用程序中实现 Facebook SDK。 按照 facebook 开发人员指南,除了我没有设置 GIT,所以我下载了 SDK,并将其导入 Eclipse,将 Java 合规级别更改为 1.
所以我构建了一个使用 API 15 中特定默认配色方案的应用程序。但是,我知道大多数设备仍在运行 API 10。为了吸引这些设备,我在我的设备上切换了最小 SDK设备到 10。这样做之后,我注意到我的
数据 所以,假设我有一个应用程序,我正在测试汽车的速度、性能、安全性等。我有一组以下格式的数据: CAR TABLE ID CAR_NAME 1 Ford Focus 2006 2 To
我有以下查询: SELECT AVG(q1) AS q1, AVG (q2) AS q2, AVG(q3) AS q3, AVG(q4) AS q4, AVG(q5) AS q5 FROM tresu
我刚刚创建了我的第一个 Android 应用程序(第 10 次)。我创建的项目的 sdk 比我预期的要高,现在我想降低它。我最初的 android maifest 不包含 部分,所以我补充说: 我还
我的小组作业是制作一个程序,允许用户输入任意数量的数字,然后程序会告诉你输入的最高数字、输入的最低数字、平均值、输入的总数和平均值。我们必须使用菜单。 我们已经写好了菜单。我们的大部分计算代码都在案例
我正在尝试设置一个显示文档目录中数据的 UITableView。 我对代码有点迷茫,因为我尝试了来自 Google 和论坛等的许多示例。 我正在创建没有 Storyboard 的应用程序,所以它全部在
我们都知道将最后 1 位设置为 0 的技巧 n&(n-1)。例如,0110 & (0110-1) = 0100。但是反过来呢?将最后一个 0 设置为 1?所以 0110 变成 0111? 我在 sta
我是一名优秀的程序员,十分优秀!