harrytse94
2022-09-06 09:48:30 +08:00
没有好的办法,这两种比较常见
1 将幂运算的底数或者指数缩小,一般底数都有对应的放大,在需求内将底数的放大倍数缩小。或者将指数缩小,比如原来是秒指数,变成分指数就缩小了 60 倍
举例 按秒计算的利率为 1.0000000006 一天 86400 秒
正常计算是 10000000006 ** 86400
改成按分计算,分利率比秒利率大,假设 1.000000005 一天 1400 分
计算就变成了 10000000050 ** 1440
由于分利率比秒利率大了一个数量级,因此可以把底数缩小,计算就变成了
1000000005 ** 1440
2 一般这个幂计算的结果不是最终结果,还需要除以放大倍数,比如计算复利 1.000003 ** 365 ,通常计算是是 (10000030) ** 365 / (10**7 ** 364) 可以在这个过程中拆分,比如
s1 = (10000030) ** 100 / (10**7 ** 99)
s2 = (s1) ** 100 / (10**7 ** 99)
s3 = (s1) ** 100 / (10**7 ** 99)
s4 = (s1) ** 65 / (10**7 ** 64)