为什么要对浮点数进行标准化 &...为什么 alpha 在 CSS rgba() 中是一个 0 到 1 的浮点数

Ros*_*oss 2 math

这里是切中要害的问题。对不起。

我试图从数学角度理解“标准化”。

有毒库中,我们可以标准化浮点数。为什么人们想要规范化浮点数...在 3D 中,我知道 3 维平面的法线可以放弃。第一个想法:这与表现有关。但后来我发现这个问题解释了游戏 UI 如何使用它。这……我有点明白了。

公平地说,我们可以标准化存在最大值和最小值的浮点数吗?我能想到的两种场景:

  1. CSS 颜色 RGBA:RGB 范围为 0 到 255,但理论上可以更高。而A是从0.0到1.0。这是标准化的,因为它可以是完全透明的或不透明的,因此它是正常的,因为有一个确定的 0 或 1?

  2. 录制音乐(或查看波形)时,可以对其进行剪辑。这是因为有一个最大值和一个最小值,所以大于 1 的标准化值会被剪掉吗?我想,在这种情况下,标准化是为了方便。

那么,为什么要标准化浮动呢?是性能吗?可读性?还有什么(视觉参考==荣誉)?一直到 11 的 Spinal Tap Amp 与此有什么关系吗?

Mas*_*gar 5

“标准化”浮点数的简要说明

在科学记数法中,您可以将任何数字写为x.y * 10^z,其中x是单个非零数字。例如212 = 2.12 * 10^2。它总是有可能x是个位数,因为你可以继续除以10。同样,它总是有可能x不为零,因为您可以继续乘以,10 除非尝试写入 value 00用科学记数法表示就是0.0 * 10^0

有关科学记数法的更多信息

继续讨论浮点数...浮点数基本上是二进制的科学记数法。它们被写在表格中x.y * 2^zx仍然是一个非零数字,但在二进制中只留下一个选项:1! 如果您在计算机中实现浮点存储,您不想浪费总是 的位 1因此您只存储yand z(和 +/-)。

但现在你如何存储0?事实证明,一个特殊值z被用来表示“x实际上是0”。然后就可以存储了0.0。但您也可以存储0.0010100011000 * 2^(special z)各种“非规范”值。

我不明白有毒库的标准化功能的作用 - 我无法找到文档。据我所知,非正规浮点数对于相同精度的浮点数没有等效的正规化表示(非正规单精度可以表示为普通双精度浮点数,但不能表示为普通单精度浮点数)。也许这就是该函数正在做的事情。但除非你正在处理一些非常低级的东西或高精度,否则你可能不在乎。

埃里克·利珀特 (Eric Lippert)对浮子的解剖结构有很好的解释。