您的位置:首页 > 其它

大数运算过程的数学基础--未完

2011-09-14 18:08 106 查看
通常情况下,linux内核是不支持浮点操作的。在进行数据处理过程中,我们经常会处于这样的尴尬:计算过程的数据位长和计算结果的误差产生了冲突.

例如如下的实例:102448/7*1024

这样的表达式在内核中可以如下表达:

long result = 102448/7*1024;

当然,作为实际的操作过程,表达式中的字面常数通常是一些变量。如果result具有累积效应,上面的表达式将产生致命的误差。

数学表达中 102448/7*1024的值为14986678

而表达式 result = 102448/7*1024 的值为14986240

显然,这种误差是巨大的,如何调整这种误差呢?

我们可以将这种问题诉诸数学恒等式:

{A/B*C}= [A/B*C + A%B*C/B]

我们将进行验证:

result = 102448/7*1024 + 102448%7*1024/7;

result = 14986240 + 438

result = 14986678

未完待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: