如何在GMP发生尾数之前或之后检测尾数精度溢出?

问题描述 投票:1回答:1

我要问的问题[[meant与尾数有关,而不是exponent,并且与本周早些时候有关"missing" digits on the sum of two negative floats.的问题有很大关系

鉴于尾数具有可变的精度,如何判断是否超出了尾数的当前精度设置?或者,从积极的角度,如何判断尾数精度是否可能溢出?

亲切的问候,布鲁斯。

c overflow detection gmp
1个回答
2
投票
有一些数值方法可以查看您是否会失去精度,但最重要的是,您需要更好地理解精度的定义。

-4939600281397002.2812

-4939600281397002.2812000000000000

不是相同的数字。

添加时

-2234.6016114467412141

-4939600281397002.2812

总和,

正确输出将仅具有20位精度,因为鉴于较大数字中的12个大小相似的数字为未知,较小数字中的附加12位数字毫无意义。您可以暗示它们为零,但如果是这种情况,则必须显式声明它们为真,并使用可以处理它的编号系统-计算机不善于理解隐含意图。

就检测何时将出现此问题而言,您需要做的就是找出它们是否具有相同的指数(假设标准化的尾数为+/- 1或类似的二进制当量)。如果未对它们进行归一化,则需要对其进行归一化以进行比较,或者对指数使用稍微复杂一点的比较。

精度和准确性不是同一件事...

-亚当

© www.soinside.com 2019 - 2024. All rights reserved.