【ULP】什么是ULP

简介: 【ULP】什么是ULP

定义:对于给定的浮点格式,特定实数值的 ulp 是与此实数值左右最近的两个浮点数的距离。

IEEE754标准的32位浮点数为例。如果想表示实数值 0.1 是无法准确表示的,只能用最接近 0.1 的可以精确表示的浮点数来表示。这样的数有两个,设为A、B,它们的十六进制和十进制表示分别为:

A:
十六进制:0x3dcccccc
十进制:0.099999994039536
B:
十六进制:0x3dcccccd
十进制:0.10000000149012

那么 0.1 的 ulp 就等于 |A - B| = 0.00000000745076

如果计算机 1 使用向下近似的方法用 A 来表示 0.1

那么误差ulps = 0.1 - 0.099999994039536 = 0.000000005960464 = (0.000000005960464 / 0.00000000745076) ≈ 0.8

如果计算机 2 使用向上近似的方法用 B 来表示 0.1

那么误差ulps = 0.10000000149012 - 0.1 = 0.00000000149012 = (0.00000000149012 / 0.00000000745076) ≈ 0.2

由上述计算可知,在 IEEE754 标准的 32 位浮点数的前提下,计算机 1 关于 0.1 的计算误差为 0.8 ulps,计算机 2 关于 0.1 的计算误差为 0.2 ulps。

相关文章
|
7月前
|
开发工具 Python
ignatureNonceIsNull
ignatureNonceIsNull
43 1
|
11月前
|
C++
我应该使用 NULL 还是 0?
我应该使用 NULL 还是 0?
|
缓存 JavaScript Go
你真的了解esModule吗
项目中我们常常会接触到模块,最为典型代表的是esModule与commonjs,在es6之前还有AMD代表的seajs,requirejs,在项目模块加载的文件之间,我们如何选择,比如常常因为某个变量,我们需要动态加载某个文件,因此你想到了require('xxx'),我们也常常会用import方式导入路由组件或者文件,等等。因此我们有必要真正明白如何使用好它,并正确的用好它们。
|
算法
F#实现Simpson's Rule求数值积分
我们知道,微积分的求值是比较复杂的。一般来说,求积分有定积分和不定积分之分。不定积分需要求出具体的表达式,但被积函数非常复杂时,求解非常费劲,非常可能找不到原函数。而定积分给定了区间范围,可以利用数值方法,利用F#实现对积分的数值计算。
1013 0
F#实现Simpson's Rule求数值积分
|
JavaScript 前端开发