简单财务计算中的数值精度

And*_*uus 1 math numerical-methods

我在大学开设了一门课程,解释了如何(以及其他方面)订购数学执行以最大限度地提高精度并降低在有限精度环境中舍入误差的风险.

我们正在通过您通常的利息计算等方式开发金融系统.有人可以分享/提醒我如何构建您的计算,以尽量减少精度损失?

我知道,例如,必须避免分裂.此外,当您划分时,如果可能,首先划分最大数字.

Joh*_*ook 5

数值计算的基本规则是避免减去几乎相等的数字.乘法和除法总是准确的:在执行乘法或除法时,您最多会失去一位精度.但是如果两个数字同意n位,则在减法中可以丢失多达n位的精度.

有各种各样的技巧可以避免这种减法.例如,假设您需要为小的x值计算exp(x) - 1.(这是你可能在兴趣计算中做的事情.)如果x太小,exp(x)等于1到计算机的所有精度,那么减法将精确地给出0,并且得到的相对误差将是100% .但是如果你使用泰勒逼近exp(x) - 1 = x + x ^ 2/2 + ......你可以得到更准确的答案.例如,exp(10 ^ -17) - 1将是完全不准确的,但10 ^ -17,即一项泰勒近似,将是非常准确的.这就是函数的expm1工作方式.见的解释log1p,并expm1 在这里.

如果您担心数值精度,则需要了解浮点数解剖结构,以便了解哪些是安全的,哪些是不安全的.

  • 减去时,如果一个数字非常大而另一个数字很小,结果将是相同的大数字不变; 并且重复多次也可以产生显着的漂移. (2认同)

lhf*_*lhf 5

使用美分,而不是美元.