对于强烈的数字运算,我正在考虑使用固定点而不是浮点数.当然,固定点类型的大小,它将运行在什么CPU上,如果我可以使用(对于英特尔)MMX或SSE或任何新的东西出现的问题...
我想知道这些日子浮点运行速度是否比以往任何时候都快,是否值得考虑固定点?是否有一般的经验法则,我们可以说它的重要性超过百分之几?35,000英尺数值性能的概述是什么?(顺便说一句,我假设大多数计算机都有通用CPU,而不是DSP或专用嵌入式系统.)
它仍然值得.浮点比过去快,但定点也是.如果您关心IEEE 754保证的精度,那么固定仍然是唯一的方法.
在处理大量数据的情况下,固定点可以是内存效率的两倍,例如四字节长整数而不是八字节双精度.通常在大型地理空间数据集中使用的技术是将所有数据减少到共同的原点,使得最高有效位可以被处理掉,并且对于其余部分使用定点整数.浮点只有在点确实浮动时才重要,即您以非常高的精度处理非常广泛的数字.
使用固定小数的另一个好理由是舍入更加简单和可预测.大多数财务软件使用具有半偶数舍入的定点任意精度小数来表示金钱.
它几乎总是更快地使用定点(x86,pentium,68k和ARM的经验).但是,它也可以取决于应用程序类型.对于图形编程(我主要使用固定点之一)我已经能够使用预构建的余弦表,日志表等来优化代码.但是基本的数学运算也证明更快.
对财务软件的评论.在之前的回答中说,固定点对于财务计算很有用.根据我自己的经验(开发大型资金管理系统和丰富的信用卡处理经验),我不会使用固定点.使用浮点或固定点会出现舍入误差.我们总是使用全部金额来表示货币金额,计算可能的最小金额(欧元或美元为1c).这确保不会丢失部分金额.在进行复杂计算时,将值转换为双精度数,应用特定于应用程序的舍入规则,并将结果转换回整数.