为什么数字在标准计算机算法中舍入?

时间:2011-07-20 00:48:16

标签: performance floating-point integer

据我所知,这使得算法更快,占用的存储空间更少,而且这些功能一直是软件在前几十年的硬件上运行的关键功能,但这仍然是一个重要特性吗?如果使用精确的有理算法进行计算,则根本不存在舍入误差,这将简化许多算法,因为您不再需要担心灾难性取消或类似的事情。

5 个答案:

答案 0 :(得分:3)

浮点比任意精度和符号包快得多,对于要求非整数计算相关的科学/工程应用,12-16个有效数字通常很多。

答案 1 :(得分:2)

编程语言ABC尽可能使用有理数(x / y,其中x和y为整数)。

有时计算会变得非常慢,因为分子和分母已经非常大。

事实证明,如果你不对分子和分母施加某种限制,这是一个坏主意。

答案 2 :(得分:1)

许多数值算法仍需要固定精度的数字才能表现得足够好。这种计算可以在硬件中实现,因为数字完全适合寄存器,而任意精度计算必须在软件中实现,并且两者之间存在巨大的性能差异。问任何一个以数字为生的人,他们是否会对运行X量较慢的事情感到满意,他们可能会说“不,这完全不可行。”

另外,我认为你会发现任意精度是不切实际甚至是不可能的。例如,小数位数可以足够快地增长,你可以放弃一些。然后你又回到原点:数字问题!

最后,有时超出一定精度的数字无论如何都无关紧要。例如,通常有效数字的数字应该反映实验不确定性的水平。

那么,你有哪些算法?

答案 3 :(得分:1)

在绝大多数计算中,精确计算答案所需的数字大小将快速增长到计算值得付出的点,并且在许多计算中它将超出精确计算甚至可能的点。可能。考虑到即使在十几次迭代中运行类似于简单的三阶IIR滤波器之类的东西,也需要在分母中具有数千位的分数;运行算法进行几千次迭代(几乎不是一次异常的操作)可能需要分母中的位数多于宇宙中存在的原子。

答案 4 :(得分:0)

传统的整数运算在硬件中实现起来更容易,更便宜(在模具上占用的空间更少,因此可以在那里安装更多的单元)。特别是当你进入DSP领域时,这会产生很大的不同。